我使用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;
};
我如何从mongoose.find()
方法返回真或假?
答案 0 :(得分:2)
请记住,nodejs是异步非io阻塞,因此任何数据库操作都将运行异步,并且可能不会根据需要分配您的变量。
我喜欢在我的流量控制中使用promises,在我的情况下,我使用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...
});