Express-Validator v4 简约示例总是 return 错误
Express-Validator v4 minimalistic example always return error
我无法让这段非常基本的代码在新版本中运行。这是我的代码
const express = require("express");
const bodyParser = require("body-parser");
const validator = require("express-validator");
const { check, validationResult } = require("express-validator/check");
const app = express();
app.use(bodyParser.json());
app.use(validator());
app.post('/',
[ check("email").isEmail() ],
(req, resp) => {
const errors = validationResult(req);
resp.send(errors.mapped()); });
app.listen(3000, () => { console.log('listening on port 3000'); });
我发送了一个 post 请求,正文包含:
{ "email": "ha@gmail.com" }
即使我提供的电子邮件完全正确,响应也总是错误
{ "email": { "location": "body", "param": "email", "msg": "Invalid value" } }
我是不是漏掉了什么?
那是因为 req.body.email
总是 undefined
,你必须通过添加此行告诉 body-parser
中间件将传入的请求主体解析为对象:
app.use(bodyParser.urlencoded({ extended: true }));
还有一件事,始终使用errors.isEmpty()
检查验证是否包含错误:
app.post('/send', [ check("email").isEmail() ], (req, resp) => {
console.log(req.body);
const errors = validationResult(req);
if (!errors.isEmpty()) {
return resp.send(errors.mapped());
}
resp.send('no errors');
});
我无法让这段非常基本的代码在新版本中运行。这是我的代码
const express = require("express");
const bodyParser = require("body-parser");
const validator = require("express-validator");
const { check, validationResult } = require("express-validator/check");
const app = express();
app.use(bodyParser.json());
app.use(validator());
app.post('/',
[ check("email").isEmail() ],
(req, resp) => {
const errors = validationResult(req);
resp.send(errors.mapped()); });
app.listen(3000, () => { console.log('listening on port 3000'); });
我发送了一个 post 请求,正文包含:
{ "email": "ha@gmail.com" }
即使我提供的电子邮件完全正确,响应也总是错误
{ "email": { "location": "body", "param": "email", "msg": "Invalid value" } }
我是不是漏掉了什么?
那是因为 req.body.email
总是 undefined
,你必须通过添加此行告诉 body-parser
中间件将传入的请求主体解析为对象:
app.use(bodyParser.urlencoded({ extended: true }));
还有一件事,始终使用errors.isEmpty()
检查验证是否包含错误:
app.post('/send', [ check("email").isEmail() ], (req, resp) => {
console.log(req.body);
const errors = validationResult(req);
if (!errors.isEmpty()) {
return resp.send(errors.mapped());
}
resp.send('no errors');
});