【问题标题】:Node.js with express: Losing form data with if error found带有 express 的 Node.js:如果发现错误则丢失表单数据
【发布时间】:2019-07-28 15:30:22
【问题描述】:

当我提交表单并发现错误(例如“缺少年龄”)时,​​整个表单数据都会被擦除干净。

我只需要为用户重新填充已经输入的数据。目前我正在尝试查看是否可以提取数据并将其传递给表单数据(如下所示)。任何帮助都是极好的。非常感谢。

这是我所拥有的:

Controller.js

exports.createStore = async(req, res) => {
  var store = new Store(req.body);

  req.checkBody('age', 'Age cannot be blank').notEmpty();

  var errors = req.validationErrors();

  if (errors) {
    res.render('WebPage', {
      title: 'Webpage Title',
      errors: errors,
      formData: {
        age: req.body.age
      }
    });
  } else {
    //Do all the things
  }
}

【问题讨论】:

  • 能否包含checkBodyvalidationErrors 的代码?我怀疑其中一个是变异体。
  • 好吧 checkBody 和 validationErrors 都是 express-validation 包的一部分。所以我不想改变那个代码,除非一切都失败了。
  • 我想你的意思是express-validator。在调用checkBodyvalidationErrors 之后,您能否确认req.body 是否为空?也许之后立即记录它。这将证明它是否正在变异。如果它没有被变异,那么我怀疑需要类似于@djheru 的解决方案。

标签: node.js forms express


【解决方案1】:

您使用的是 pug 或车把之类的模板引擎吗?如果是这样,您将需要获取 formData.age 的值并将其分配给您的 html 输入中的值,例如

<input name="age" type="text" value="<%= formData.age || '' %>" /> 如果您使用的是 ejs 模板引擎。基本上,您必须从 render 调用中获取值并使用它来设置 HTML 中的值

【讨论】:

  • 我正在使用 PUG,所以我会调查一下。非常感谢!
  • 当然,请记住,如果答案有帮助,您可以随时点赞或接受答案。
猜你喜欢
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-08
  • 2014-02-15
  • 2021-12-20
  • 1970-01-01
相关资源
最近更新 更多