mongojs实施新的bie

时间:2015-07-15 10:31:14

标签: 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(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()。我们如何处理这类问题。

1 个答案:

答案 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对于他说的话可能是正确的,我们可能永远不想关闭数据库连接。