Я сейчас пытаюсь внедрить экспресс-валидатор в свой проект. Однако все работает, моя проблема в том, что есть блок кода, который постоянно повторяется, поэтому я пытаюсь его реорганизовать.
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;
Таким образом, код в конце моего логина - это код, который постоянно повторяется. Так как бы мне сделать рефакторинг, чтобы мне не нужно было объявлять его каждый раз?