Рефакторинг Экспресс Валидатор - PullRequest
0 голосов
/ 07 июля 2019

Я сейчас пытаюсь внедрить экспресс-валидатор в свой проект. Однако все работает, моя проблема в том, что есть блок кода, который постоянно повторяется, поэтому я пытаюсь его реорганизовать.

auth.validator.js

const { check, validationResult } = require('express-validator');
const User = require('./user.model');
const responseHelper = require('../../../helpers/response.helper');

const login = [
  check('email')
    .not().isEmpty().withMessage('Email is required.')
    .isEmail().withMessage('Email is not valid.')
    .normalizeEmail(),

  check('password')
    .not().isEmpty().withMessage('Password is required.')
    .isLength({ min: 6 }).withMessage('Password needs to be at least 6 characters.'),

  // this block of code will keep repeating
  function (req, res, next) {
    const errors = validationResult(req);
    if (errors) {
      return responseHelper.withValidationError(res, 422, errors);
    }
    next();
  },
];

// some other functions
// .......

exports.validate = (method) => {
  switch (method) {
    case 'login':
      return login;

    case 'register':
      return register;

    default:
      break;
  }
};

auth.route.js

const express = require('express');
const router = express.Router();
const v = require('./auth.validator');
const AuthController = require('./auth.controller');

router.post('/login', v.validate('login'), AuthController.login);

module.exports = router;

Таким образом, код в конце моего логина - это код, который постоянно повторяется. Так как бы мне сделать рефакторинг, чтобы мне не нужно было объявлять его каждый раз?

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