joi_-_validacija

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
joi_-_validacija [2024/06/08 08:14]
tro
joi_-_validacija [2024/06/08 08:15] (текущий)
tro
Строка 87: Строка 87:
 </code> </code>
 Зверни увагу, що ми використовуємо**validateAsync** , тому що це дозволить нам виконувати асинхронні операції під час валідації, забезпечуючи можливість розширення функціоналу. Це зручно для майбутніх сценаріїв, де можуть бути додані асинхронні перевірки, або коли валідація може вимагати звернень до зовнішніх ресурсів. Зверни увагу, що ми використовуємо**validateAsync** , тому що це дозволить нам виконувати асинхронні операції під час валідації, забезпечуючи можливість розширення функціоналу. Це зручно для майбутніх сценаріїв, де можуть бути додані асинхронні перевірки, або коли валідація може вимагати звернень до зовнішніх ресурсів.
 +
 +Але таке рішення буде перенавантажувати логіку в тілі контроллера, тому непоганим рішенням буде винести валідацію в окремий middleware validateBody. Створи для нього окремий файл у папці middlewares:
 +
 +<code>
 +// src/middlewares/validateBody.js
 +
 +import createHttpError from 'http-errors';
 +
 +export const validateBody = (schema) => async (req, res, next) => {
 +  try {
 +    await schema.validateAsync(req.body, {
 +      abortEarly: false,
 +    });
 +    next();
 +  } catch (err) {
 +    const error = createHttpError(400, 'Bad Request', {
 +      errors: err.details,
 +    });
 +    next(error);
 +  }
 +};
 +
 +</code>
  • /sites/data/attic/joi_-_validacija.1717834487.txt.gz
  • Последнее изменение: 2024/06/08 08:14
  • tro