带有节点express的express验证器生成的错误

问题描述

我正在使用nodejs,express和express-validator。我正在尝试在我的sign_up页面上使用Express Validator。 Express-validator在对象数组中生成错误
错误
结果{
格式化程序:[功能:格式化程序],
错误:[
{
值:未定义,
msg:“请输入有效的用户名”,
参数:“用户名”,
位置:“身体”
},
{
值:未定义,
msg:“请输入有效的电子邮件”,
参数:“电子邮件”,
位置:“身体”
},
{
值:未定义,
msg:“请输入有效的密码”,
参数:“密码”,
位置:“身体”
}
]
}

我使用邮递员来测试注册操作 并在请求中发送以下内容
{ “ username”:“ ruba”, “电子邮件”:“ test@gmail.com”, “密码”:“ 1234544545 @”

}

我的user.js代码

const express = require("express");
const bodyParser = require("body-parser");
const user = require("./routes/user"); //new addition
const InitiateMongoServer = require("./config/db");

// Initiate Mongo Server
InitiateMongoServer();

const app = express();

// PORT
const PORT = process.env.PORT || 4000;

// Middleware
//app.use(bodyParser.json());
app.use(express.json());

app.get("/",(req,res) => {
  res.json({ message: "API Working" });
});


app.use("/user",user);

app.listen(PORT,res) => {
  console.log(`Server Started at PORT ${PORT}`);
});

我的索引代码

{{1}}

所以请帮助我。有什么问题吗?

编辑:已解决。问题出在邮递员设置中(内容类型必须为JSON)

解决方法

您启用了

app.use(express.json());

因为我看不到您的代码有任何问题(关于快递验证程序)。

我建议您在此修复程序之后,将检查更改为正文,因为您只想检查正文的内容。

我正在使用中间件来帮助我使代码简短易读,我将与您分享

function validation(validations: Array<ValidationChain>) {
    return async (req: Request,_res: Response,next: NextFunction) => {
        await Promise.all(validations.map((v) => v.run(req)));
        const errors = validationResult(req);
        if (errors.isEmpty()) {
            return next();
        }
        const msg = errors
            .array()
            .map((er) => `${er.param}`)
            .join(',');
        const issue = new Issue(400,`missing or invalid params: ${msg}`);
        next(issue);
    };
}

用法:

router.post(
    '/login',validation([body('email').isEmail(),body('password').isLength({ min: 5,max: 30 })]),async (req: Request,res: Response,next: NextFunction): Promise<void> => {
        ...
    });
``'