问题描述
我正在使用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> => {
...
});
``'