使用 Node.js 进行服务器端表单验证并在客户端进行响应

4

Express-form是一个强大的用于node.js/express的验证插件。然而,在示例和文档中,所有响应都是服务器端的(console.log),这足以开发,但不太实用,无法告诉用户出了什么问题。

目前,我可以想象两种不同的解决方案:

  1. 提交表单并重定向回来/重新呈现带有req.body和验证消息附加到错误字段的表单,以添加'error'-类。
  2. 使用AJAX提交表单。

我更喜欢选项2,因为我不想在呈现“新”时再次查询数据库。但是我不知道如何将验证结果传递回客户端并将'error'-类添加到输入字段中。

有什么想法吗?

1个回答

3
我试图在浏览器中首先通过javascript验证用户输入,然后在服务器上进行验证,并在渲染的表单中输出错误(类似于rails)。现在我正在使用我的一套自定义验证器,所以我无法为express-form指明正确的方向。
除了我的自定义正则表达式外,有时我也会使用validator npm包,在浏览器中可以使用纯DOM或某些框架来使用validator验证。
编辑:与AJAX验证一起工作非常容易,您可以在请求中接收一个对象(如果使用了express.bodyParser()中间件),验证参数,如果有错误,则可以在响应中指出。
{
"errors": {
    "foo": "must be a number"
  }
}

并且:

for (i in answer.errors) {
  var target = document.getElementById(i);
  target.class = "error";
  // here you can also handle the error description
}

如果您在浏览器端使用框架,那么有插件或编写插件应该很简单。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接