Вы можете сделать запрос на проверку данных в разных местах:
1. Проверить в контроллере с помощью Celebrate
Celebrate - это промежуточное ПО для express с использованием Joi, для установки, запуска npm i celebrate
Затем используйте его в своем приложении, например:
const { celebrate, Joi, errors, Segments } = require('celebrate');
app.post("offices/:id", celebrate({
[Segments.BODY]: Joi.object().keys({
name: Joi.string().required()
}),(req, res) => {
// req.body.name now isn't empty
// do something with it
});
Если промежуточное ПО Celebrate обнаружило неверные данные, оно будет передано вашему express обработчику ошибок
2. Подтвердить на сервисном / бизнес-уровне с помощью Joi
Это очень похоже на первый вариант, но вы выполняете проверку данных на своем бизнес-уровне
Сначала установите Joi с npm i joi
Затем вы можете создать схему для проверки и использовать ее, например:
const Joi = require('joi');
const schema = Joi.object({
name: Joi.string().required()
});
app.post("offices/:id", (req, res) => {
const validatationResult = schema.validate(req.body);
if (validatationResult.error) {
// error found
console.log(validatationResult.error);
return res.status(400).send();
}
// do something with req.body.name
});
Вы можете делать много других вещей с помощью Joi, например, указывать минимальную / максимальную длину, совпадать шаблон регулярного выражения, et c. Вы можете проверить do c здесь (вы также можете выполнить аналогичную проверку с помощью serverate, так как Celebrate также использует Joi)
3. Проверить в модели
Вы можете выполнить проверку данных в модели mon goose, используя Mon goose Validations , как предложено @ jcragun
Лично я предпочитаю размещать проверку данных на сервисном / бизнес-уровне или модели, потому что это имеет больше смысла.
Вы также можете проверить joi goose, что позволяет вам делать Joi проверка в схеме mon goose.