使用 Postgres 和 Knex 更新 Table 中的日期时间值
updating datetime value in Table using Postgres & Knex
我想将 'access token' 到期日期时间更新为 'users' table 以检查访问令牌是否有效以重置密码。
所以我使用 moment 传递了一个日期时间字符串值。
但它无法更新日期时间且没有错误消息。
'forgotPassword' 函数可以在不更新 'resetPasswordExpires' 的情况下进行查找。
我尝试将 'resetPasswordExpires' 列类型设置为时间戳。它没有用。
[ Front-End ]
const inOneHour = moment()
.add(1, 'hours')
.format('MMMM Do YYYY, HH:mm:ss');
[ users table / Database ]
table.datetime('resetPasswordExpires', { useTz: false });
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 => {
...
});
});
}
...
});
};
谢谢!!
好吧,我确信它失败了,只是因为你没有捕捉到异常。
首先为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()
这样你每次在代码中使用它时都不必担心格式。
我想将 'access token' 到期日期时间更新为 'users' table 以检查访问令牌是否有效以重置密码。 所以我使用 moment 传递了一个日期时间字符串值。
但它无法更新日期时间且没有错误消息。
'forgotPassword' 函数可以在不更新 'resetPasswordExpires' 的情况下进行查找。
我尝试将 'resetPasswordExpires' 列类型设置为时间戳。它没有用。
[ Front-End ]
const inOneHour = moment()
.add(1, 'hours')
.format('MMMM Do YYYY, HH:mm:ss');
[ users table / Database ]
table.datetime('resetPasswordExpires', { useTz: false });
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 => {
...
});
});
}
...
});
};
谢谢!!
好吧,我确信它失败了,只是因为你没有捕捉到异常。
首先为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()
这样你每次在代码中使用它时都不必担心格式。