2015-03-31 132 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