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

NodeJS MongoDB接口Postman POST请求报错:ObjectID传递问题排查

解决POST请求无法读取req.body.genreId的问题

嘿,我帮你排查了下代码,你遇到的TypeError: Cannot read property 'genreId' of undefined问题,核心原因是Express没有解析POST请求的JSON请求体,导致req.body是undefined,自然找不到genreId这个属性。

问题根源

在你的index.js里,你创建了Express应用,但没有添加解析JSON请求体的中间件。Express默认不会自动解析JSON格式的请求体,必须手动配置express.json()中间件,否则req.body始终是undefined。

快速修复步骤

  1. 在index.js中,把express.json()中间件添加到所有路由挂载之前:
const express = require ('express');
const app=express();

// 新增这一行,解析JSON格式的请求体
app.use(express.json());

const home=require('./routes/home');
const genres=require('./routes/genres');
const customers=require('./routes/customers');
const movies = require('./routes/movies')
// ... 其余连接数据库、挂载路由的代码保持不变

额外检查点

除了添加中间件,还要确认Postman的请求配置是否正确:

  • 确保请求的Headers里包含Content-Type: application/json;
  • 请求体选择raw格式,并且右侧下拉框选中JSON,而不是form-data或x-www-form-urlencoded——你的请求JSON内容是正确的,但格式不对的话Express依然无法解析。

如果还是有问题,可以在movies.js的POST路由里先打印req.body,确认是否被正确解析:

routes.post('/', async (req, res) => {
  console.log('Received request body:', req.body); // 打印请求体
  const { error } = validate(req.body);
  // ... 其余代码
});

这样修改后,应该就能正常读取req.body.genreId,完成电影的创建请求了。

内容的提问来源于stack exchange,提问作者Sharjeel Moqrab Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:28:13