类型错误:无法使用 mongoDB npm 包在 nodejs 中读取 MongoCR.auth 上的 null 属性'getAll'



当我使用node express和mongodb时,我遇到了奇怪的错误。我在谷歌上搜索了解决方案,但到目前为止还没有找到答案。所以在这里张贴。希望我能在这里找到答案。我已经把我的代码。请帮助。节点代码:

 var fs = require('fs');
 var mongo = require("mongodb"),
     Db = mongo.Db,
     Server = mongo.Server;
 var express = require("express");
 var mongoClient = mongo.MongoClient;
 var app = express();
 var port = process.env.PORT || 8080;
 app.get('/putdata', function (req, res) {
     var db = new Db('local', new Server('localhost', 27017));
     var countries = JSON.parse(fs.readFileSync("countries.json", 'utf8'));
     console.log(countries.countries[0]);
     db.authenticate('testuser', 'test@123', function (err, result) {
     db.open(function (err, data) {
         var obj = { name: "xyz" };
         data.collection('test').insert(obj, { safe: true }, function (err, result) {
             if (err) {
                 res.send({ 'error': 'An error has occurred' });
             } else {
                 console.log('Success: ' + JSON.stringify(result));
                 res.send(result[0]);
             }
         });
     });
    .
    .
    .
this is how i created mongodb user:
> db.getUsers()
[
        {
                "_id" : "test.testuser",
                "user" : "testuer",
                "db" : "test",
                "roles" : [
                        {
                                "role" : "readWrite",
                                "db" : "test"
                        }
                ]
        }
]
Error when i hit localhost:3000/putdata :
    TypeError: Cannot read property 'getAll' of null
   at MongoCR.auth (E:UsersDocumentsVisual Studio 2013ProjectsPoCServernode_modulesmongodbnode_modulesmongodb-corelibauthmongocr.js:56:25)
   at Server.auth (E:UsersDocumentsVisual Studio 2013ProjectsPoCServernode_modulesmongodbnode_modulesmongodb-corelibtopologiesserver.js:1032:40)
   at Server.auth (E:UsersDocumentsVisual Studio 2013ProjectsPoCServernode_modulesmongodblibserver.js:379:22)
   at authenticate (E:UsersDocumentsVisual Studio 2013ProjectsPoCServernode_modulesmongodblibdb.js:1375:21)
   at Db.authenticate (E:UsersDocumentsVisual Studio 2013ProjectsPoCServernode_modulesmongodblibdb.js:1412:44)
   at E:UsersDocumentsVisual Studio 2013ProjectsPoCServerapp.js:29:8
   at Layer.handle [as handle_request] (E:UsersDocumentsVisual Studio 2013ProjectsPoCServernode_modulesexpresslibrouterlayer.js:82:5)
   at next (E:UsersArunDocumentsVisual Studio 2013ProjectsPoCServernode_modulesexpresslibrouterroute.js:100:13)
   at Route.dispatch (E:UsersDocumentsVisual Studio 2013ProjectsPoCServernode_modulesexpresslibrouterroute.js:81:3)
   at Layer.handle [as handle_request] (E:UsersDocumentsVisual Studio 2013ProjectsPoCServernode_modulesexpresslibrouterlayer.js:82:5)

如果你看到路径,它在mongodb包中。所以我怀疑这个问题是在NPM mongodb包。请建议。由于

我通过关闭所有打开的数据库连接来解决同样的问题。只需在每次执行db.open()时添加db.close()

外部实体的管理正在破坏其他函数中的数据库链接。管理你的人际关系。驯服你的程序

最新更新