Как использовать условную проверку — «больше» и «меньше» с экспресс-валидаторами в express.js ?

#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).