Экспресс-валидатор - получить ошибки - PullRequest
0 голосов
/ 25 июня 2019

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

Как заполняется validationErrors и как мне получить к нему доступ внутри функции маршрута?Примеры, которые я нашел в документах и ​​на других сайтах, не помогли мне

route:

use strict';

const express = require('express');
const router = express.Router();
const User = require('../back/api/models/UserModel');
const Helper = require('./handlerInputs.js');
const bcrypt = require('bcrypt');

router.post('/registrar', [Helper.validaRegistro], function (req, res, next) {

    const errors = validationResult(req).throw();
    if (errors) {
      return res.status(422).json({ errors: errors });  
    }

   [... user register code .... ]
});

Обработчик:

'use strict'

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

exports.validaRegistro = function(req, res, next){

    check(req.body.nome)
      .not().isEmpty()
      .withMessage('Nome é obrigatório')
      .isLength({min: 3, max: 20})
      .withMessage('Nome deve ter entre 3 e 20 caracteres')
      .isAlpha('Nome deve ser literal');

    check(req.body.email)
      .normalizeEmail()
      .isEmail()
      .withMessage('Email inválido'); 

  optPwd = {
      checkNull: false,
      checkFalsy: false
  }

  check(req.body.password)
    .exists(optPwd)
    .withMessage('Senha é obrigatória');

    check(req.body.password === req.body.passordconf)
    .exists()
    .withMessage('Confirme a senha')
    .custom((value, { req }) => value === req.body.password)
    .withMessage('Senhas não são iguais')
    .custom((value, { req }) => value.length >= 8)


    const result = req.getValidationResults();
    const erros = req.ValidationErrors;

    if(erros){
        console.log(erros);
    }
    ???? 

}

1 Ответ

2 голосов
/ 25 июня 2019

Что вы можете сделать, это просто написать логику проверки в самом промежуточном программном обеспечении, а не писать снова и снова одно и то же на другом контроллере.

Другой лучший способ создания общей логики - это поместить правила проверки в разные файлы и поместить обработку логики проверки в другой файл. Пожалуйста, следуйте этому URL, я реализовал то же самое эффективным способом.

https://github.com/narayansharma91/node_quick_start_with_knex

 if(erros){
        const status = 422;
        res.status(status).json({
          success: false,
          status,
          errors: errors.array(),
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...