You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman发送POST请求时Review验证失败:缺少audiobookId与userId

评论提交报错排查方案

1. 核对请求体字段与Schema的匹配度

  • 打开Postman请求体,检查audiobookId和userId的拼写、大小写是否和Review Schema里的字段完全一致,别出现audioBookId(大小写错误)或者bookId(漏写前缀)这类低级错误。
  • 确认Postman请求头里的Content-Type是否设置为application/json,要是选了form-data或者x-www-form-urlencoded格式,后端读不到JSON字段,自然会提示必填项缺失。

2. 检查Schema的必填规则

查看你的Review Schema代码,确认audiobookId和userId是否标记了required: true,示例正确配置如下:

const ReviewSchema = new mongoose.Schema({
  audiobookId: { type: String, required: true },
  userId: { type: String, required: true },
  // 其他评论字段...
});

如果Schema里没设必填却报错,那是配置矛盾;如果设了必填,问题大概率出在请求数据没正确传到后端。

3. 验证后端是否正确解析请求体

  • 检查后端代码里有没有添加express.json()中间件,Express默认不解析JSON请求体,没加的话req.body会是空对象,后端自然拿不到字段。正确配置示例:
const express = require('express');
const app = express();
// 必须添加此中间件才能解析JSON请求体
app.use(express.json());
  • 查看控制器代码,有没有误过滤req.body里的字段,比如只解构了content字段,漏了解构audiobookId和userId,导致存数据库时没传入这两个必填项。

4. 确认授权令牌的用户信息注入逻辑

你已添加授权令牌,需确认以下两点:

  • 令牌解析后,后端是否把userId挂载到了req.user.id或req.userId这类指定位置;如果后端设计是从令牌取userId而非请求体传入,那Schema里要求userId必填就矛盾了,要么改Schema去掉必填规则,要么改控制器把令牌里的ID赋值给Review的userId字段。
  • 验证令牌是否有效,比如是否过期、签名是否正确,令牌解析失败的话,后端拿不到用户ID,也会触发userId必填的报错。

5. 排查Postman请求配置细节

  • 确认请求方法为POST,URL路径和后端路由完全匹配,别因路径错误进入了错误的处理逻辑。
  • 检查Authorization头的格式是否为Bearer 你的令牌内容,别漏了Bearer前缀,也别复制错令牌。
  • 如果请求体是raw JSON格式,检查JSON语法是否合法,比如有没有多余逗号、引号不配对的情况,语法错误会导致后端解析失败,req.body为空,进而触发必填项缺失报错。

内容的提问来源于stack exchange,提问作者mew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 13:49:55