当我使用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()
。
外部实体的管理正在破坏其他函数中的数据库链接。管理你的人际关系。驯服你的程序