Я сейчас создаю приложение с nodejs (10.15.2), но у меня возникают некоторые проблемы с функцией входа в систему.
Фрагмент из моего файла "dbconnector. js":
login(email, password) {
return userModel.findOne({
email: email
}).lean().then(function(user) {
// return user;
return bcrypt.compare(password, user.password, function(err, res) {
if (res) {
console.log(user); //prints the userinfo - works fine
return user;
}
});
});
};
Фрагмент из моей подачи. js file:
app.post('/login', async (req, res) => {
var { email, password } = req.body;
var user = await dbconnector.login(email,password);
console.log(user) //returns undefined
if (user != false) {
console.log("loggedin");
const accessToken = jwt.sign({ email: user.email, id: user.id }, key.tokenKey);
res.json({
accessToken
});
} else {
res.send('Username or password incorrect');
}
});
Моя проблема в том, что функция login () возвращает неопределенное значение. Однако, когда я изменяю его на следующее, оно работает идеально (просто без проверки пароля ...):
login(email, password) {
return userModel.findOne({
email: email
}).lean().then(function(user) {
return user;
});
};
Так что я знаю, что что-то не так с частью bcrypt / обещание, но я не смог найти решение.