Я использую bcrypt 3.0.6.У меня есть следующий код в моем Model
файле:
User.prototype.validPassword = async function(password) {
try{
// original code:
// return await bcrypt.compare(password, this.password);
const match = await bcrypt.compare(password, this.password);
console.log(match);
} catch(error) {
console.log(error);
return false;
}
};
, и я вызываю его с моего контроллера:
try {
if (!req.body.userName || !req.body.password) throw "Invalid Login"
user = await User.findOne({
where: { userName: req.body.userName }
})
if (!user) throw "Invalid login"
const match = user.validPassword(req.body.password);
// const match = await bcrypt.compare(req.body.password, user.password);
if (!match) throw "Invalid login";
// build token
...
});
} catch(error) {
res.status(500).json({
"msg": "Server Error",
"error": error,
})
}
Когда я отлаживаю его, match
равен undefined
.
Если я выполняю сравнение в контроллере, оно работает как положено.Я бы предпочел, чтобы сравнение было в файле модели.Что я здесь не так делаю?
Я новичок в асинхронном / ожидающем коде, но успешно использовал его для реализации нескольких других методов контроллера в том же проекте.