猿问

如何解决node.js异步问题?

代码:
User.findOne({name:name},function(err,user){
if(err){
console.log(err);
data.data="发生未知错误"
data.status=1001
}
if(!user){
console.log(user)
data.data="用户不存在"
data.status=1002
}
else{
user.comparePassword(password,function(err,isMatch){
if(err){
console.log(err);
data.data="发生未知错误"
data.status=1001
}
if(isMatch){
data.data="登录成功"
data.status=1000
}
else{
data.data="密码不正确"
data.status=1003
}
})
}
res.send(data)
})
问题:数据库用的mongodb,建模工具用的mongoose,这里由于nodejs的异步机制,导致最后res.send(data)发送的数据永远是data:{data:'',status:1000},请问一下怎么写才能够让代码顺序执行,得到正确的data值?
牛魔王的故事
浏览 376回答 2
2回答

眼眸繁星

mongoose现在都是promise的了建议采用asyncawaitasyncfuncName(){constuser=awaitUser.findOne({});//await后面接promise对象........res.send(...data);}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答