我正在使用mongoose.find()
函数来检查用户的凭据。
该findUser
函数将接收从.find()
,error
和data
论据。
我想在.find()
方法是否找到与查询匹配的变量上存储变量。
相反,我console.log(logged)
正在显示许多有关MongoDB操作的查询信息。
var logged = UserModel.find(
{ username: username, password: password}, findUser );
console.log(logged);
var findUser = function (err, data) {
(data.length) ? return true : return false;
};
如何从方法返回true或falsemongoose.find()
?
请记住,nodejs是异步非io阻塞的,因此任何数据库操作都将异步运行,并且可能不会根据需要分配变量。
我喜欢在流控制中使用promise,在我的情况下,我使用bluebird,这是一个非常酷的promise库,您可以执行以下操作(假设在此处表达):
var BPromise = require('bluebird'),
mongoose = BPromise.promisifyAll(require('mongoose'));
// etc etc load your model here
//---------------------------------
var thiz = this;
thiz.logged = false;
var myPromises = [];
myPromises.push(
UserModel.find({ username: username, password: password}).execAsync().then(function(data){
thiz.logged = (data.length>0);
})
);
//等待所有诺言完成,以防万一
BPromise.all(myPromises).then(function(){
// do whatever you need...
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句