gpt4 book ai didi

forms - Express.js 表单处理和错误检查——正确的方法

转载 作者:搜寻专家 更新时间:2023-10-31 22:37:35 24 4
gpt4 key购买 nike

我在模板中有一个表单,我根据 GET 请求呈现它:

app.get('/register', function (req, res) {
res.render('register', {
title: 'Register'
, twitterDetails: req.session.twitterDetails
}
);
});

然后我在 POST 请求中处理表单:

app.post('/register', function (req, res, next) {
// Generic validation
req.assert('name', 'Name is empty').notEmpty();
req.assert('username', 'Username is empty').notEmpty();
// Email validation
req.assert('email', 'Email is invalid.').isEmail();
req.assert('email', 'Email field is empty').notEmpty();
// Password validation
req.assert('password', 'Password too short. Must be 6 characters or more.').len(6);
req.assert('password', 'Passwords do not match.').is(req.body.confirmPassword);
req.assert('password', 'Password field is empty').notEmpty();
req.assert('confirmPassword', 'Confirm password field is empty').notEmpty();
var errors = req.validationErrors(true);
if (errors) {
console.log(errors);
// What do to if there are errors?
}
// If there are no errors, continue handling the form…
});

在这个表单处理程序中,我正在使用 express-validator 模块检查错误。这很好,但我的问题是如果有错误怎么办。 AFAIK,有两种选择:

  1. 将用户重定向到/register,使用req.flash将错误传递给下一个请求
  2. 重新渲染模板并将错误直接传递给模板

在第一个选项中,我冒着丢失表单数据的风险,因为用户离开了 POST。我也可以使用 req.flash 使用他们填写的数据抢占表单,但这会在页面刷新时消失。

对于第二个选项,我在重复自己——尤其是当我向模板发送大量变量时,所有这些都必须重复。我还需要通过模板传递所有表单数据并使用这些值填写表单。

处理这样的表格的正确程序是什么?

最佳答案

使用选项 1。这称为 POST/Redirect/GET pattern并且无处不在。

如果您害怕丢失数据,请使用 session 。这就是他们的目的。在 session 期间保持状态。

不要忘记 HTTP 是无状态的。

关于forms - Express.js 表单处理和错误检查——正确的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com