2015-03-31 112 views
1
var user_col = db.collection('users'); 
var cursor = user_col.findOne({email:'[email protected]', password:'test'}, function(err,doc){ 
      console.log("THIS IS A TEST"); 
    }); 

這段代碼的問題是回調函數似乎沒有運行。 這是一個測試不會被輸出。爲什麼我的回撥功能不能運行?

我連接到一個數據庫,db作爲參數傳遞給這個函數。什麼是可能的問題?

+0

最顯而易見的問題是沒有這樣的文件存在。你確定有這些標準的文件 - 我敢肯定,如果沒有這樣的文件存在,回調將不會被調用。 find()'可能是更好的選項來調試它。 – mnemosyn 2015-03-31 18:05:17

+0

連接是否在任何其他位置明確關閉?在查詢完成之前,這可能會起作用。 – 2015-03-31 18:05:39

回答

2

findOne()沒有收到回調作爲第二個參數,第二個是projection這意味着如果你定義它將只返回指定參數db.collection.findOne(query, projection)。這就是你的回調沒有被執行的方式。 findOne documentation here

Examples here

更新時間:

根據該意見似乎是this docs(我的錯),但問題是缺少第二個參數findOne(query, options, callback)

+2

請注意,您已鏈接到Shell API。 [Node.js/JavaScript API](http://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#findOne)應該支持回調作爲第二個或第三個參數('options'是可選的)。 – 2015-03-31 18:02:15

+0

如果你這樣做並不起作用: user_col.findOne({email:'[email protected]',password:'test'},null,function(err,doc)console.log(「THIS IS A TEST「); }); – Matho 2015-03-31 18:04:40

+0

@Matho:你在比較蘋果和橘子 - 你處於完全錯誤的環境中。這與mongo shell命令無關。 – mnemosyn 2015-03-31 18:07:12