为什么此查询返回数据库对象?

时间:2012-07-15 04:03:41

标签: node.js mongodb heroku mongohq

mongo.connect(mongostr, {}, function(error, db){ 
    var mycoll = db.collection("newuser"); 
    mycoll.find({'userID':12345}, 
                {'userID':true}, 
                function(err, value) {
                    console.log(value);
                }); 
});

我已经为mongoDB添加了一个测试集合,我知道它存在的事实。我知道一个事实,确切的查询返回我想要的东西(在mongoHQ面板中自己测试)。 mongo对象工作正常。不幸的是docs don't have an example,所以我看不出我做错了什么。

当查询运行时,我得到db对象的控制台转储:

 { db:     { databaseName: 'appxxxxxxx',
      serverConfig: 
       { host: 'staff.mongohq.com',
         port: 10096,
         options: {},
         internalMaster: true,
         connected: true,
         poolSize: 1,
         ssl: false,
         slaveOk: undefined,

1 个答案:

答案 0 :(得分:1)

db.collection是异步调用。您正在以同步方式访问它。

var mycoll = db.collection("newuser");

试试这个:

mongo.connect(mongostr, {}, function(error, db){ 
    var mycoll = db.collection("newuser", function(err,collection){
             collection.find({'userID':12345}, 
                {'userID':true}, 
                function(err, value) {
                    console.log(value);
                }); 
    });
});