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

eja*_*ang 5 javascript callback mongodb node.js 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;

    });
Run Code Online (Sandbox Code Playgroud)

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

如何让回调函数正常工作?请原谅新手问题.

Joh*_*yHK 10

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

更新

请注意,findOne2.0驱动程序中已弃用,但其替换也表现出相同的行为:

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