Пользовательская проверка работает только с проверкой схемы [express-validator] - PullRequest
0 голосов
/ 31 октября 2018

Я попытался определить пользовательскую функцию для проверки поля в одной из моих форм. Я заметил, что эта функция работает, только если я выполняю проверку через схему. Разве нет способа также работать в проверке цепочки?

validation.js

    export = {
  customValidators: {
    isUsernameAvailable(username: string) {
      return new Promise((resolve, reject) => {
        User.findOne({ username: username }, (err, user) => {
          if (err) throw err;
          if (user == null) {
            resolve();
          } else {
            reject();
          }
        });
      });
    }
  }
};

app.js

app.use(expressValidator(require("./validation")));

Это не работает:

router.post(
  "/",
  [
    checkBody("username").isUsernameAvailable()
  ],
  (req, res) => {
    const err = validationResult(req);
    if (err) return res.json(err);
    res.json({ success: true });
  }
);

Это работает:

router.post("/", async (req, res) => {
  req.checkBody({
    //username
    username: {
      notEmpty: true,
      isUsernameAvailable: {
        errorMessage: "username is already taken"
      },
    },
    //password
    password: {
      notEmpty: true,
    }
  });
  try {
    const result = await req.asyncValidationErrors();
  } catch (err) {
    res.status(400).json(err);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...