Как сделать единую функцию для проверки пустых значений - PullRequest
0 голосов
/ 02 мая 2020

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

Вот как это работает: https://tppr.me/b8sSO, https://tppr.me/xm0mY

И я хочу что-то вроде этого: https://tppr.me/FQ9IE, https://tppr.me/C6P2Y

1 Ответ

0 голосов
/ 02 мая 2020

Напишите промежуточное программное обеспечение для проверки результата проверки.

validation.js

const { validationResult } = require('express-validator');
const rules = require('./rules');

const validate = (request, response, next) => {
  const errors = validationResult(request);
  if (errors.isEmpty()) {
    return next();
  }
  const extractedErrors = [];
  errors.array().map(err => extractedErrors.push({ [err.param]: err.msg }));

  return response.status(422).json({
    errors: extractedErrors,
  });
}

module.exports = {
  validate: validate,
  Rule: rules
};

и файл rules.js, содержащий все правила:

const { body } = require('express-validator')

function registerRule() {
  return [

    // username must be an email
    body('username')
      .not().isEmpty()
      .isEmail(),
      // .isLength({ min: 5 })
      // .withMessage('Username must have more than 5 characters'),

    // password must be at least 5 chars long
    body('password', 'Your password must be at least 5 characters')
      .not().isEmpty()
      .isLength({ min: 5 }),
  ];
};

module.exports = {
  Register: registerRule.call()
};

И используйте это как:

const validation = require('./libs/validation');

validate = validation.validate;
ValidationRule = validation.Rule;

router.post('/register', ValidationRule.Register, validate, (req, res, next) => {});

Я использую этот источник, чтобы ответить.

...