node.js mongojs findOne回调将错误返回为null

时间:2012-08-20 00:23:05

标签: javascript node.js mongodb callback mongojs

目前被这个错误推上了墙。

我正在使用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;

    });

然而错误和用户都是'null'。据我所知,错误应该填充某种数据,即使它没有找到任何数据。

如何让回调功能正常工作?请原谅新手问题。

1 个答案:

答案 0 :(得分:10)

findOne查询找不到至少一个匹配文档时,回调的第二个参数(在本例中为user)设置为null。这不是错误,因此err也是null。所以你所看到的是预期的不匹配发现的响应。

<强>更新

请注意,findOne已在2.0驱动程序中弃用,但其替换也表现出同样的行为:

users.find({'fb_id' : fbUserMetadata.id}).limit(1).next(err, doc) {
    // doc is null if a matching document wasn't found
});