【发布时间】:2020-04-28 16:23:03
【问题描述】:
在我的 Express.js 后端,当用户想要重置密码时,会通过 Sendgrid 将链接发送到他们的电子邮件,当点击该链接时,用户会收到此错误:
TypeError: Cannot read property 'render' of undefined
at resetPasswordController.showResetPassword (/root/apps/AskArya-Node.js-Vue.js/Server/app/http/controllers/auth/resetPasswordController.js:11:33)
at Layer.handle [as handle_request] (/root/apps/AskArya-Node.js-Vue.js/Server/node_modules/express/lib/router/layer.js:95:5)
at next (/root/apps/AskArya-Node.js-
resetPasswordController 的代码是:
class resetPasswordController extends controller {
showResetPassword(req, res) {
const title = 'بازیابی رمز عبور';
res.render('home/auth/passwords/reset', {
recaptcha: this.recaptcha.render(),
title,
token: req.params.token
});
}
async resetPasswordProccess(req, res, next) {
await this.recaptchaValidation(req, res);
let result = await this.validationData(req);
if (result) {
return this.resetPassword(req, res);
}
this.back(req, res);
}
async resetPassword(req, res) {
let field = await PasswordReset.findOne({
$and: [{ email: req.body.email }, { token: req.body.token }]
});
if (!field) {
req.flash('errors', 'اطلاعات وارد شده صحیح نیست لطفا دقت کنید');
return this.back(req, res);
}
【问题讨论】: