Node.js mongojs实现新bie
嗨,我是MongoDB和NodeJs的新手。我正在使用“mongojs”模块从mongodb简单地读取数据。守则如下:Node.js mongojs实现新bie,node.js,mongodb,mongojs,Node.js,Mongodb,Mongojs,嗨,我是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(
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()是在提取数据之前执行的。我们如何处理此类问题。上述代码是异步的。正在执行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();
});
我也是node的新手。是的,@blake说的可能是对的,我们可能永远不想关闭db连接。“异步代码”。仔细阅读<调用db.close()
时,code>.findOne()尚未“完成”。在实际代码中,您也几乎从不关闭数据库连接。请仔细阅读。可能的副本