mongojs实现新的bie

嗨,我是新来的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(); 

当我在terminal上运行它们时,我得到这个错误:

 { name: 'MongoError', message: 'server localhost:27017 sockets closed' } 

看起来像db.close()在获取数据之前正在执行。 我们如何处理这类问题。

上面的代码是asynchronous的。 而db.candidate.findOne()的操作正在执行中。 该节点不等待进程完成,并开始执行另一行。 所以简单地说,db.close()在callback中可以解决这个错误。

 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(); }); 

我也是节点的新手。 所以是的,@布莱克可能是正确的,他说什么,我们可能永远不想closures数据库连接。