Я пытаюсь использовать асинхронный водопад в первый раз и столкнулся с проблемой, когда у меня есть функция, которая не была достигнута, и это время ожидания запроса.
Я включил весь код для контроллера, который я пытаюсь создать / использовать.Я поместил файл console.log там, где, кажется, я не могу достичь.
Пока остальная часть кода выполняется, по-видимому, без ошибок.Я сделал console.log много раз, и все в порядке.Я также проверил базу данных, и это правильный результат.Единственная проблема - отправка части электронной почты, но это не должно быть проблемой, поскольку я использую ту же функцию отправки электронной почты в том же файле, и она работает.Я использую его как раз перед этим, чтобы отправить электронное письмо, содержащее токен сброса.
exports.tokenPost = function(req, res, next) {
let password = req.body.password;
let password_confirm = req.body.password_confirm;
if(password != password_confirm) return res.status(400).json({message: 'Error passwords don\'t match. Please make sure they match'});
async.waterfall([
function(done) {
User
.findOne({ resetPasswordToken: req.params.token })
.where('resetPasswordExpires').gt(Date.now())
.exec(function(err, user) {
if(err){
console.log(err);
}
if (!user) {
return res.status(400).json({success: false, message: 'We can\'t find a user with that reset token. Please try resetting your password again or contact customer support.'});
}
user.password = password;
// user.resetPasswordToken = undefined;
// user.resetPasswordExpires = undefined;
user.save(function(err) {
if (err) console.log(err);
if (err) return next(err);
});
});
},
function(user, done) {
console.log('This code is not being run);
let message = 'Hello,\n\n' + 'this is a confirmation that the password for your account ' + user.email + ' has just been changed.\n';
sendEmail(`"Company Name" ${config.noreply}`, req.body.email, 'Password changed', message);
res.status(200).json({success: true, message: 'Success your password has been changed.'});
}
], function(err) {
console.log(err);
if (err) return next(err);
});
};
Я ожидаю, что письмо будет отправлено, а затем будет запущено res.status.json
, дающее мне ответ, который я ищу.