首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Express-validator -获取错误

Express-validator -获取错误
EN

Stack Overflow用户
提问于 2019-06-25 11:55:43
回答 1查看 802关注 0票数 0

我正在尝试构建一个路由中间件函数来验证表单,但我对如何获取错误感到有点困惑。

validationErrors是如何填充的,我应该如何在路由函数中访问它?我在文档和其他网站上找到的例子对我没有帮助

路由:

代码语言:javascript
复制
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 .... ]
});

处理程序:

代码语言:javascript
复制
'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);
    }
    ???? 

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-25 12:20:29

您可以做的是,只需在中间件内部编写验证逻辑,而不是在不同的控制器上一遍又一遍地编写相同的内容。

创建通用逻辑的另一种最佳方法是将验证规则放在不同的文件上,并将处理验证逻辑放在不同的文件中。请关注这个网址,我已经用高效的方式实现了同样的事情。

https://github.com/narayansharma91/node_quick_start_with_knex

代码语言:javascript
复制
 if(erros){
        const status = 422;
        res.status(status).json({
          success: false,
          status,
          errors: errors.array(),
        });
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56746630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档