Как сделать условную проверку экспресс-валидатора 5.3.0? - PullRequest
0 голосов
/ 06 декабря 2018
export function valUPM() {
  return (req: Request, _res: Response, next: NextFunction) => {
    req
      .checkBody(
        "paymentType",
        `paymentType: ${messages.getFromSession(req, "mustNotBeEmpty")}`
      )
      .notEmpty();
    if (req.body.paymentType === "USP") {
      req
        .checkBody(
          "storeId",
          `storeId: ${messages.getFromSession(req, "mustNotBeEmpty")}`
        )
        .notEmpty();
    } else if (req.body.paymentType === "CC") {
      if (req.body.register) {
        req
          .checkBody(
            "register",
            `register: ${messages.getFromSession(req, "mustBeBoolean")}`
          )
          .isBoolean();
      } else {
        req
          .checkBody(
            "register",
            `register: ${messages.getFromSession(req, "mustNotBeEmpty")}`
          )
          .notEmpty();
      }
    }
    req.getValidationResult().then(errs => {
      if (errs.isEmpty()) {
        return next();
      }
      const error = new BFFError(
        400,
        "BadRequest",
        1,
        errs.array().map(error => {
          return { [error.param]: error.msg };
        })
      );
      return next(Error(JSON.stringify(error)));
    });
  };
}

После изменения API, как реализовать этот тип логики в экспресс-валидаторах

Вызов req.checkBody или требуемой функции проверки внутри цикла if сделал то же самое, как показано выше, но после изменения вAPI, как это можно реализовать Я попытался обойти проверку PaymentTYpe как пользовательский валидатор и реализовать проверки и выдать сообщение внутри пользовательского валидатора, но ключи изменились.

Использование текущего APi, что является правильнымспособ сделать это, так как это будет полезно для всех людей, которые хотят обновить версию 3.0.0 до API экспресс-валидатора

1 Ответ

0 голосов
/ 10 декабря 2018

Условной поддержки проверки нет пока в экспресс-валидаторе v5.x.x, но она приходит скоро .
Вот запрос на извлечение, на случай, если вы захотитеоставьте свой отзыв об API: https://github.com/express-validator/express-validator/pull/658

Тем не менее, обратите внимание, что устаревший API (использующий req.checkBody(), req.getValidationResult() и т. д. еще не был удален из экспресс-валидатора.

Вы можете продолжать использовать его в v5.x.x так же, как и в v3.x.x. Это просто не рекомендуется делать, поскольку оно устарело и может быть удалено, когда выйдет v6 (еще нет!).

Все документы здесь , рядом с новыми документами API.

Отказ от ответственности: I 'Эксперт-валидатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...