如何使用express-validator的黑名单方法



我有以下post请求来验证一些数据:

app.post(
"/review",
[
// Add the middleware to validate email and restaurant info below:
check("email").isEmail(),
check("restaurant").notEmpty().blacklist("<>"),
check("rating").isNumeric(),
check("review").notEmpty().blacklist("<>")
],
// ...

validator.js的文档演示使用blacklist方法如下:


blacklist(input, '\[\]')

考虑到我如何添加中间件的上下文,理解到底应该是input参数有点令人困惑。我已经使用check方法来寻找输入字段,到底应该在blacklist方法中做什么?

由于您使用的是[express-validator][1],它作为[validator.js][1]的包装器,输入由express-validator注入到blacklist方法,在您的情况下,由于您使用的是express-validatorcheck()方法,输入将是带有标签的参数,您已提供作为check()方法的参数,该方法可能存在于以下任何请求对象中:

  • req.body
  • req.cookies
  • req.headers
  • req.params
  • req.query

对于check("restaurant").notEmpty().blacklist("<>"),将从上述两个请求对象中提取标签为restaurant的参数,对于check("review").notEmpty().blacklist("<>"),将提取标签为review的参数。

因此,应该为检查方法提供的唯一参数是一个regex字符串,该字符串指定必须删除的字符。

最新更新