#express #conditional-statements #express-validator
#экспресс #условные операторы #экспресс-валидатор
Вопрос:
Я использую handlebar page
в качестве шаблона и nodejs
для серверной части.
Я хочу использовать condtional validation if (a < b)
сообщение об ошибке «затем показать сообщение об ошибке» на веб-странице. Но я не могу этого сделать express-validators
.
Это мой приведенный ниже код, который я пытаюсь использовать, он не работает. Я использую ключевое слово из 2 букв = 'lt'
действительно, но оно не работает.
router.post('/addtasks', function(req, res, next) {
req.checkBody('topic', 'Empty Topic').notEmpty();
req.checkBody('website', 'Empty Website').notEmpty();
req.checkBody('words', 'Empty Words').notEmpty().isLength({ min: 3 }).isInt({ lt: 2000});
});
first 2
Работают сообщения об ошибке на веб-странице. Но 3rd one
это не работает.
Есть ли также any other way
или express package
с помощью которого я могу этого добиться?
Спасибо!
РЕДАКТИРОВАТЬ ДЛЯ ТОГО, ЧТО Я ПЫТАЮСЬ:
router.post('/addtasks', function(req, res, next) {
req.checkBody('topic', 'Empty Topic').notEmpty();
req.checkBody('website', 'Empty Website').notEmpty();
var totalCount = 2000;
totalCount = totalCount - 500;
req.checkBody('words', 'Empty Words or Min. Words = 500 Required or either Word limit exceeded').notEmpty().isInt({ gt:500, lt: totalCount});
});
Здесь я хочу lt:
динамически вводить значение, которое продолжает меняться каждый раз, когда оно не фиксировано. но здесь это не так. Для этого мне нужно правильное решение.
Комментарии:
1. вы хотите проверять условие меньше 2000 только тогда, когда «слова» являются целым числом?
2. тип данных words — целое число. И я хочу применить проверку, поскольку она не должна быть больше 2000 и меньше 500.
3. В этом случае ответ БЕНАРДА Патрика должен решить вашу проблему
4. Да, это решение, но здесь проблема в том, что у меня есть min и max в качестве переменных, что означает, что оно продолжает меняться. например, var a = 2000; поэтому я хочу указать значение как: .isInt({min: 100, max: a}); Но таким образом он не принимает значение.
5. Я не думаю, что наличие динамической переменной вызывает здесь проблему. поскольку вы разделяете больше вашего фрагмента кода, это может помочь решить проблему.
Ответ №1:
Express-validator
использует validator.js
библиотеку.
Следуя его документации
Вы должны использовать min
max
свойства и
req.checkBody('words', 'Empty Words').notEmpty().isInt({ min:100, max: 2000});
Извлечь :
проверьте, является ли строка целым числом.
options — это объект, который может содержать ключи min и / или max для проверки того, что целое число находится в пределах границ (например, { min: 10, max: 99 }). параметры также могут содержать ключ allow_leading_zeroes , который при значении false запрещает целочисленные значения с начальными нулями (например, { allow_leading_zeroes: false } ). Наконец, опции могут содержать ключи gt и / или lt, которые будут принудительно использовать целые числа, которые больше или меньше, соответственно, предоставленного значения (например, {gt: 1, lt: 4} для числа от 1 до 4).