Express 密钥已通过,但在postman中验证失败
我有一个补丁请求,根据文档的对象更新某些信息。当我使用邮递员(表单数据)发送请求时,我收到一个验证错误,上面写着“\u id”是必需的 这是《邮递员》中的画面 路线与此相似Express 密钥已通过,但在postman中验证失败,express,postman,joi,Express,Postman,Joi,我有一个补丁请求,根据文档的对象更新某些信息。当我使用邮递员(表单数据)发送请求时,我收到一个验证错误,上面写着“\u id”是必需的 这是《邮递员》中的画面 路线与此相似 router.patch("/update", async (req, res) => { try{ await updateValidation(req.body); // whatever stuff processed with the data
router.patch("/update", async (req, res) => {
try{
await updateValidation(req.body);
// whatever stuff processed with the data
} catch (err) {
res.status(400).send({ message: err.details[0].message });
}
}
验证函数如下所示
const updateValidation = (data) => {
const schema = Joi.object({
_id: Joi.string().required(),
// other whatever validation possible
});
return schema.validateAsync(data);
};
我是不是遗漏了什么?我想是的,请指出。除了使用
var-bodyParser=require('body-parser')在服务器端,它仍然会返回空的req.body,这将导致错误,因为您已经进行了验证。在Postman中使用表单数据发送修补程序请求时返回空req.body的原因是body解析器无法处理多部分/表单数据。您需要一个能够处理multer等多部分/表单数据的包。
在第一次安装body解析器和multer时,请转到终端并使用−
npm install --save body-parser multer
因此,将此代码添加到server.js中
var express = require('express');
var bodyParser = require('body-parser');
var multer = require('multer');
var upload = multer();
var app = express();
下次使用此中间件时:
// for parsing application/json
app.use(bodyParser.json());
// for parsing application/xwww-
app.use(bodyParser.urlencoded({ extended: true }));
//form-urlencoded
// for parsing multipart/form-data
app.use(upload.array());
app.use(express.static('public'));
导入body parser和multer后,我们将使用body parser解析json和x-www-form-urlencoded头请求,同时使用multer解析多部分/表单数据。首先,我在条目文件中使用bodyparser。第二,这听起来很愚蠢,但我完全失去了这一点,就像我完全忘记了骡子一样。我在其他路线上使用这个。谢谢你指出,你救了我一个小时的挫折。