В своей веб-форме я использую флажок, чтобы выбрать список компаний для каждой записи флажка, я дал название компании в качестве атрибута «значение». В nodejs я использую экспресс-валидатор для проверки формы. Мне не ясно, как проверять и дезинфицировать пользовательский ввод для этих элементов флажка.
Я вижу, что во всех примерах экспресс-валидатор использует имя параметра формы для проверки определенного параметра (например, check ('userName') в качестве промежуточного программного обеспечения. Но для флажков конкретный параметр будет присутствовать только тогда, когда пользователь выберет этот параметр. Если у меня есть 10 вариантов, и пользователь выбирает только 4 из них, то req.body будет иметь только эти параметры. А также я хочу, чтобы все они проходили одинаковую проверку и дезинфекцию. Подскажите пожалуйста как это сделать.
Я использую версию NodeJS: 10,8
Экспресс валидатор: 5.3.0
Мои значения флажков: company_a1, company_a2, ... company_a10. Я попытался написать собственный Validator и проверить для каждого параметра 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) => { ... }
];