代码: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值?
1 回答

犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
mongoose现在都是promise的了 建议采用async await
async funcName() {
const user = await User.findOne({}); // await 后面接promise对象
....
....
res.send(...data);
}
添加回答
举报
0/150
提交
取消