Express.js - 将自定义对象添加到 req.session.errors

Express.js - Adding custom object to req.session.errors

我正在使用 express-validators 和 express-session 来处理我的表单。

in index.js :我将错误重定向到 /inscription 作为对象以显示字段上方的错误。效果很好。

router.post('/submit-inscription', function (req, res, next) {
req.check('mail', 'Invalid Mail Address').isEmail();
var errors = req.validationErrors();
if (errors) { 
req.session.errors = errors;
req.session.success = false;
res.redirect('/inscription');
}

但是如果没有错误,我会检查输入的邮件是否已经存在于我的mongodb。

如果它已经存在,我想重定向到 /inscription 并出现特殊错误。我可以使用新的会话参数来执行此操作,但我想使用相同的错误会话来执行此操作。

所以我尝试了:

else { // email already used
error = {location: 'body', msg:"Email address already registered", param:'mail', value:''};
errors.push(error);
req.session.errors = errors;
res.redirect('/inscription');
}

我得到的错误是:errors.push 不是函数。我猜是因为错误不是数组而是对象。

所以我的问题是如何将此自定义错误添加到我的 req.session.errors 对象中?

您可以在 errors object 中创建一个新密钥,然后将其分配给 session.error

示例:

errors.newSessionKey = error;
req.session.errors = errors;
res.redirect('/inscription');

在与 Sohail 讨论后,非常感谢他,他帮助我发现了从哪里以及如何解决它。

let error = {location: 'body', msg:"Email address already registered", param:'mail', value:''};
req.session.errors = [error];
res.redirect('/inscription');