我想将“访问令牌”到期日期时间更新到“用户”表中,以便检查访问令牌是否有效以重置密码。 因此,我使用moment传递了一个datetime字符串值。
但是它无法更新日期时间,没有错误消息。
查找'forgotPassword'函数无需更新'resetPasswordExpires'。
我试图将'resetPasswordExpires'列类型设置为timeStamp。没用
exports.forgotPassword = (req, res) => {
const { username, email, inOneHour } = req.body;
return knex('users')
.where({ username, email })
.first()
.then(async user => {
if (user) {
const token = await util.getRandomToken(user);
const mailOptions = {
...
};
return knex('users')
.where({ username })
.first()
.update({
resetPasswordToken: token,
resetPasswordExpires: inOneHour,
})
.then(() => {
sendEmail(mailOptions)
.then(() => {
...
})
.catch(err => {
...
});
});
}
...
});
};
{{1}}
谢谢!!
答案 0 :(得分:1)
好吧,我确定它失败的原因只是您没有捕获到异常。
首先为KNEX添加错误处理程序
return knex('users')
.where({ username })
.first()
.update({
resetPasswordToken: token,
resetPasswordExpires: inOneHour,
})
.then(() => {
// Do your work
})
.catch((err) => {
// print out the error
});
现在开始解决,postgres不支持日期格式为.format('MMMM Do YYYY, HH:mm:ss');
,因此您将无法使用此格式。
您当前的格式会产生类似July 18th 2019, 19:03:41
您可以使用.format('MMMM DD YYYY, HH:mm:ss');
作为初学者,此创建日期为July 18 2019, 19:03:41
。但是我建议您只做.format()
,这样就不必担心每次在代码中使用它时的格式。