mongoose不提供查找function的错误

在试图用Mongoose构造一些静态方法时,调用find()或findOne()时似乎无法访问错误参数。 这是我的静态:

User.statics.authenticate = function(login, password, cb){ return this.model('User').findOne({ username: login, password: password }, function(err, user){ console.log("error", err); console.log("user", user); }).exec(cb); }; 

我试图用这样的东西来调用它:

 exports.session = function(req, res){ return User.authenticate(req.body.login, req.body.password, function(err, doc){ console.log('err', err); console.log('doc', doc); }); }; 

在任何情况下,不pipefindOne查询的结果如何,err都是空的。 任何想法在这里发生了什么? 也许我不能把所有这些callback包裹起来…

显然,一个空的查询结果实际上并不是一个错误,所以这就是'err'仍然为空的原因,尽pipe没有find结果。 所以,你需要testing'用户'是否为空,然后创build自己的错误。

我不确定它是否解释了你所看到的,但是如果你直接提供一个callback函数来findOne那么你不会调用exec 。 所以你的validationfunction应该看起来像这样:

 User.statics.authenticate = function(login, password, cb){ this.model('User').findOne({ username: login, password: password }, function(err, user){ console.log("error", err); console.log("user", user); cb(err, user); }); };