目前被这个错误逼到了墙边。
我正在使用 mongodb 的 mongojs 包装器运行 node.js 应用程序。我在默认端口上启动了 mongod,然后运行
var db = require('mongojs').connect('localhost:27017/my_db');
var users = db.collection('users');
users.findOne({'fb_id' : fbUserMetadata.id}, function(err, user) {
console.log(err);
console.log(user);
debugger;
});
然而 err 和 user 都是'null'。据我所知,即使没有找到任何数据,err 也应该填充某种数据。
如何让回调函数正常工作?请原谅新手的问题。
最佳答案
当 findOne
查询没有找到至少一个匹配的文档时,回调的第二个参数(在本例中为 user
)设置为 null
。这不是错误,所以 err
也是 null
。所以你看到的是预期的 no-match-found 响应。
更新
请注意 findOne
在 2.0 驱动程序中已弃用,但其替换也表现出相同的行为:
users.find({'fb_id' : fbUserMetadata.id}).limit(1).next(err, doc) {
// doc is null if a matching document wasn't found
});
关于javascript - node.js mongojs findOne 回调返回错误为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12031041/