mongojs 实现 new bie

mongojs implementation new 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();

当我在终端中 运行 他们时,我得到这个错误:

{ 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 可能是正确的,我们可能永远不想关闭数据库连接。