密钥已通过但邮递员验证失败

Key passed but validation fails in postman

我有这个补丁请求,我根据文档的对象更新某些信息。当我使用 Postman(form-data) 发送请求时,我收到验证错误,提示“_id”是必需的。

这是它在 Postman 中的样子,

路线与此类似,

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'); 之外,它仍然 return 为空 req.body 这将导致错误,因为您已经进行了验证。在 Postman 中使用表单数据发送 PATCH 请求时 return 为空 req.body 的原因是正文解析器无法处理 multipart/form-data。您需要一个可以像 multer 一样处理 multipart/form-data 的包。 首先安装 body-parser 和 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解析器和multer后,我们将使用body-parser解析json和x-www-form-urlencoded头请求,同时我们将使用multer解析multipart/form-data .