2012-07-15 230 views
0
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:  { databaseName: 'appxxxxxxx', 
     serverConfig: 
     { host: 'staff.mongohq.com', 
     port: 10096, 
     options: {}, 
     internalMaster: true, 
     connected: true, 
     poolSize: 1, 
     ssl: false, 
     slaveOk: undefined, 

回答

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); 
       }); 
    }); 
}); 
+1

這是深刻的。爲什麼如果我交換.findOne()它工作,即使我同時使用db.collection()? – 2012-07-15 05:14:52

相關問題