如何在Express(NodeJS)中验证和处理表单

21

Express中是否有一种优选的表单处理和验证库?

我真的很希望能找到与Django表单中类似的抽象级别 - 即在模板中进行验证和错误报告。

如果可以在客户端使用相同的验证,那就太好了。

是否有人使用或编写了什么好的东西?

2个回答

18

7
我不喜欢别人控制我的表单标记的想法。 - chovy
8
@chovy:你应该仔细阅读文档,而不是引导其他人走向错误的方向。当你使用form.toHTML()或field.toHTML()渲染表单时,可以在参数中传递自定义迭代器。迭代器是toHTML用于渲染表单/字段的函数。你可以创建自定义小部件、验证器、迭代器等等... - Jean-Philippe Leclerc
1
你们两个都有道理。扩展一下@chovy所说的,即使你传递一个迭代器,也意味着表单必须使用.toHTML()来渲染。与此相反,并且扩展一下@Jean-Philippe所说的,实际上你甚至不需要使用.toHTML()来处理几乎所有与表单相关的内容(尽管需要仔细阅读文档才能弄清楚这一点)。 - Dave Jensen

7
这看起来也是可行的,仍在开发中:https://github.com/ctavan/express-validator 下面是验证表单提交(登录 post 请求)的示例:
exports.login.post = function(req, res){
  req.assert('username', 'Enter username').notEmpty();
  req.assert('password', 'Enter password').notEmpty();
  res.locals.err = req.validationErrors(true);

  if ( res.locals.err ) {
    if ( req.xhr ) {
      res.send(401, { err: res.locals.err });
    } else {
      res.render('login', { err: res.locals.err });
    }

    return;
  }

 //authenticate user, data is valid
};

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