【问题标题】:How to validate checkbox values using express-validator?如何使用 express-validator 验证复选框值?
【发布时间】:2019-01-13 06:50:45
【问题描述】:

在我的 Web 前端表单中,我使用复选框为每个复选框条目选择公司列表,我已将公司名称作为“值”属性。在 nodejs 中,我使用 express-validator 来检查表单。我不清楚如何验证和清理这些复选框项目的用户输入。

我看到所有快速验证器的示例都使用表单参数名称来检查特定参数(例如)check('userName') 作为中间件。但是对于复选框,只有当用户选择该参数时才会出现特定参数。如果我有 10 个选项并且用户只选择其中 4 个,那么 req.body 将只有这些参数。而且我希望所有这些都通过相同的验证检查和消毒。请建议如何做。

我正在使用 NodeJS 版本:10.8 快速验证器:5.3.0 我的复选框值为 company_a1,company_a2,...company_a10。我尝试编写自定义验证器并检查每个正文参数的字母数字值,但即使值包含字母数字字符串,检查也不会引发错误

async function validateReportParams(body, { req, loc, rpath }) {

 for (const par of Object.keys(req.body)) {
    try {
      check(req.body[par].isAlphanumberic());
    } catch (err) {
        return Promise.reject(err);
    }
  }
}
exports.genReport = [
  validateReq,
  param().custom(validateReportParams),
  async (req, res, next) => { ... }
];

【问题讨论】:

    标签: node.js express-validator


    【解决方案1】:

    尝试为每个复选框使用相同的名称,而不是应用 isIn([]) 来验证:https://express-validator.github.io/docs/check-api.html

    check(req.body.checkbox.isIn(['company_a1','company_a2',...,'company_a10']));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-03
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 2013-07-11
      相关资源
      最近更新 更多