NodeJS, Joi Validation - прервать выполнение при неудачной проверке - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть следующий код:

const schema = Joi.object().keys({
            zip: Joi.number().min(1).max(9999999).required().label("Just an example error code, avoid the zip code validation method (0-9999999)."),
        });

        Joi.validate({ zip: req.body.zip }, schema, function (err, value) {
            if (!(err === null)){
                res.status(400).send(err['details']['0']['context']['label']);
            }
        });

Даже когда я успешно вызываю сообщение об ошибке и возвращаю его мне в заголовке HTTP (ошибка 400), выполнение только что выиграло 'Остановитесь и продолжите бежать.Я предполагаю, что это происходит, потому что он уже пропускает другие части выполнения и даже не попадает в ту часть, где он возвращает сообщение об ошибке заголовков.

Как мне избежать этого?Будет ли единственный способ избежать этого - использовать зависимость Joi с callbacks / promises / async, await?

Если нет, как я могу наилучшим образом реализовать зависимость Joi с Promises?

Спасибо.

1 Ответ

0 голосов
/ 25 сентября 2018

Обнаружил проблему:
При отправке ответа с использованием:
res.status(400).send(err['details']['0']['context']['label']);

я понял, что не использовал оператор return для того, чтобы сделать его "окончательным".Добавление его решило проблему следующим образом:

return res.status(400).send(err['details']['0']['context']['label']);

...