【发布时间】:2019-02-19 11:50:42
【问题描述】:
我第一次尝试使用异步瀑布,但遇到了一个问题,即我有一个未达到的功能并且正在超时请求。
我已经包含了我正在尝试制作/使用的控制器的所有代码。我已经在我似乎无法到达的地方放置了一个 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 给我我正在寻找的回复。
【问题讨论】:
标签: javascript node.js async-await async.js