Как сравнить целочисленные элементы массива в валидаторе express? - PullRequest
1 голос
/ 24 апреля 2020

У меня есть express валидатор для целочисленного массива длиной 2, который выглядит следующим образом.

exports.createItem = 
    check("times").exists()
        .withMessage('MISSING').isArray({min: 2, max: 2})
        .withMessage('err'),
    check("times.*").not()
        .isString().isInt(),
    (req,res, next) =>
    {
        validationResult(req,res,next);
    }
];

Я хотел бы проверить, что второе целое число массива больше первого. Как я могу это сделать?

1 Ответ

1 голос
/ 24 апреля 2020

Вы можете использовать пользовательский валидатор , чтобы иметь доступ к элементам массива

check("times").exists().withMessage('MISSING')
    .isArray().withMessage('times is not array')
    .custom((value) => {
        if (!value.every(Number.isInteger)) throw new Error('Array does not contain Integers'); // check that contains Integers
        if (value.length !== 2) throw new Error('Not valid Array Length'); // check length
        if (value[0] > value[1]) throw new Error('First element array is bigger than second'); 
        return true;
    })

Кстати, опции min и max для isArray() у меня метод не сработал

...