Как реализовывать утверждения с другого файла используя express-validator?

Я делаю утверждения с express-validator, у меня есть следующая структура папок / файлов:

Файл Server

-api  
|-v1  
| |-projects  
|   |-routes.js  
-utils  
|-validations.js

Файл validations.js он содержит:

const { check, validationResults } = require('express-validator');

module.exports = {
  projectValidations: [
    check('title')
      .isEmpty({ ignore_whitespace: false })
      .withMessage(
        'El título del proyecto no debe estar vacío y debe ser diferente de espacios.'
      )
      .isAlphanumeric(['en-US', 'es-ES'])
      .withMessage('El título solo debe contener caracteres alfanuméricos')
  ]
};

И routes.js:

const router = require('express').Router();

const controller = require('./controller');

const validations = require('../../../utils/validations');

/**
 * /api/projects/ POST Creación de proyecto nuevo
 * /api/projects/:projectId/tasks GET Consultar tareas del proyecto
 * /api/projects/:projectId/report GET Consultar/generar reporte del proyecto
 * /api/projects/:projectId/members GET Consultar miembros del proyecto
 */

router
  .route('/')
  .get(controller.all)
  .post(controller.create, validations.projectValidations);

module.exports = router;

Я пробую делать доказательства post, который видится ранее, размещаю например "title" со схемами - но никогда он не бросает мне никакого типа ошибки с сообщениями withMessage ().

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

3
задан 15.08.2019, 20:37
1 ответ

У тебя есть плохо порядок middlewares. framework express они выполняет в том же порядке, что ты объявляешь следовательно в тебе cГіdigo

.post(controller.create, validations.projectValidations);

действительно то, что estГЎs говоря:

  1. Выполняет логику дела и пошли ему ответ на клиента (controller.create)
  2. Проверь, - ли request vГЎlido (validations.projectValidations)

Очевидно это estГЎ плохо, так как он санкционируется сначала и потом выполняют ее lГіgica дела.

Она soluciГіn правильная serГ - в:

.post(validations.projectValidations, controller.create);

TambiГ©n важен понимать, что, чтобы переходить из одного middleware, к другому нужно призывать в нее funciГіn next и очень вероятное, что в твоем controller, что ты выполняешь, это какой-то mГ©todo объекта такое домашнее животное как res.send(), из-за которого middleware validaciГіn в любом случае не ejecutarГЎ.

3
ответ дан 01.12.2019, 22:30

Теги

Похожие вопросы