比较用户登录请求的密码。使用async并等待等到获得实际响应。
我希望它按照1,2,3,4的顺序运行(console.log的顺序)
但它执行为1,3,4,2。请帮助。
脚本不等待comparePassword
async login(request){
let response = await User.findOne({ email: request.email }, async (err, user) => {
if (err) throw err;
console.log('1');
let isMatch = await user.comparePassword(request.password, (err, isMatch) => {
console.log('2');
if (err) throw err;
request.isMatch = isMatch;
});
console.log('3');
return request;
});
console.log('4');
console.log('response', response);
}
如果你使用async
/ await
,你使用的是promises,你不能将回调传递给mongoose方法。如果你没有通过,他们将返回一个你可以await
的承诺。你在找
async login(request){
let response = await User.findOne({ email: request.email });
console.log('1');
let isMatch = await user.comparePassword(request.password);
console.log('2');
request.isMatch = isMatch;
console.log('3');
return request;
console.log('4');
console.log('response', response);
}