Как я могу заставить экспресс-валидатор работать в этом коде?

#javascript #node.js #express #mern #express-validator

#javascript #node.js #экспресс #мерн #экспресс-валидатор

Вопрос:

У меня есть routes/auth.js файл и controller/auth.js файл, содержащий код, как показано ниже :

 //routes/auth.js
const express=require('express');
const router=express.Router();
const {check,validationResult} = require('express-validator');
const {signout,signup}=require('../controllers/auth');

router.get("/signout",signout);

router.post("/signup",[
    check("name").isLength({min: 3}).withMessage("Name should be of atleast 3 chars"),
    check("email").isEmail(),
    check("password").isLength({min: 3})
],signup);

module.exports=router;
  
 //controllers/auth.js
const User=require("../models/user");
const {check,validationResult} = require('express-validator');

exports.signup=(req,res)=>{
    const errors=validationResult(req);
    if(!errors.isEmpty)
    {
        return res.status(422).json({
            error: errors.array()[0].msg
        })
    }
    const user=new User(req.body);
    user.save((err,user)=>{
        if(err){
            return res.status(400).json({
                err: "There is an error"
            });
        }
        else
        {
            return res.json({
                name: user.name,
                email: user.email,
                id: user._id
            });
        }
    })    
};
  

Экспресс-валидатор не работает. Когда я отправляю запрос post через PostMan, объект с именем меньше 3 символов сохраняется в базе данных. Сообщение об ошибке не отображается. Пожалуйста, помогите с этим.

Комментарии:

1. попробуйте if(!errors.isEmpty()) ?

2. Спасибо, чувак, это полностью сработало. Я не знаю, как я пропустил такую простую вещь. Еще раз спасибо. Приветствия.