我遇到的问题是我的POST方法没有传递我的URL参数,而是使用路径路径中的动态参数占位符。这是因为我需要将该参数设置为我的表单中的隐藏字段才能在POST方法中使用它?我只是将值用于查询过滤条件,而不是将其作为值传递给我的数据库记录。
/*==== /RESET ====*/
siteRoutes.route('/reset/:token')
.get(function(req, res){
models.User.findOne({
where: {
resetPasswordToken: req.params.token, //Returns the correct parameter
resetPasswordExpires: {
$gt: moment().format('YYYY-MM-DD HH:mm:ss')
}
}
}).then(function(){
res.render('pages/app/reset-password.hbs');
})
})
.post(function(req, res){
async.waterfall([
function(done){
models.User.update({
password: req.body.password,
resetPasswordToken: undefined,
resetPasswordExpires: undefined
}, { where: {
resetPasswordToken: req.params.token, //Returns ':token'
resetPasswordExpires: {
$gt: moment().format('YYYY-MM-DD HH:mm:ss')
}
}})
// Nodemailer
}
])
res.redirect('/login');
});
控制台日志示例:
Executing (default): UPDATE `user` SET `password`='password',`updatedAt`='2016-04-03 18:57:14' WHERE `reset_password_token` = ':token' AND `reset_password_expires` > '2016-04-03 14:57:14'