在我的Web前端表单中,我正在使用复选框为每个复选框条目选择公司列表,我已将公司名称指定为“值”属性。在nodejs中,我使用express-validator来检查表单。我不清楚如何验证和清除这些复选框项目的用户输入。
我看到所有表达验证器的示例都使用表单参数名称来检查特定参数(例如check('userName'))作为中间件。但是对于复选框,仅当用户选择该参数时才会显示特定参数。如果我有10个选项,并且用户仅选择其中4个,则req.body将仅具有这些参数。而且我也希望所有这些都通过相同的验证检查和消毒。请提出建议。
我正在使用NodeJS版本:10.8 快速验证器:5.3.0 我的复选框值为company_a1,company_a2,... company_a10。我尝试编写自定义验证程序,并检查每个body参数的字母数字值,但是即使该值包含字母数字字符串,检查也不会引发错误
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) => { ... }
];
答案 0 :(得分:0)
尝试为每个复选框使用相同的名称,然后应用isIn([])
进行验证,如下所示:https://express-validator.github.io/docs/check-api.html
check(req.body.checkbox.isIn(['company_a1','company_a2',...,'company_a10']));