您好我是MongoDB和NodeJs的新手。我正在使用“mongojs”模块来简单地从mongodb读取数据。代码如下:
var dbname = 'XXXX';
var databaseUrl = 'mongodb://localhost:27017/'+dbname;
var collections = ['candidate','cities','states','countries'];
var mongojs = require('mongojs');
var db = mongojs(databaseUrl, collections);
db.candidate.findOne({fname:'XXX'},function(err,doc){
if(err){
console.log(err);
}
else{
console.log(doc);
}
});
db.close();
当我在终端中运行它时,我收到此错误:
{ name: 'MongoError',
message: 'server localhost:27017 sockets closed' }
似乎在获取数据之前执行了db.close()。我们如何处理这类问题。
答案 0 :(得分:0)
上面的代码是异步的。正在执行db.candidate.findOne()的操作。节点不等待进程完成,它开始执行另一行。所以简单地说,db.close()在回调中可以解决这个错误。
var dbname = 'XXXX';
var databaseUrl = 'mongodb://localhost:27017/'+dbname;
var collections = ['candidate','cities','states','countries'];
var mongojs = require('mongojs');
var db = mongojs(databaseUrl, collections);
db.candidate.findOne({fname:'XXX'},function(err,doc){
if(err){
console.log(err);
}
else{
console.log(doc);
}
db.close();
});
我也是节点的新手。所以,是的,@ blackke对于他说的话可能是正确的,我们可能永远不想关闭数据库连接。