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

如何使用MongoDB实现POST请求,解决Postman报Cannot POST /api/grocery问题

问题排查与修复方案

1 直接报错根因修复

你收到的Cannot POST /api/grocery属于Express路由匹配失败的404错误,问题出在入口文件index.js的路由定义:
现有代码的路由路径没有以斜杠开头:

// 错误写法
app.post('api/grocery', (req, res) => {
  groceryController.addGrocery(req, res)
})

Express要求路由路径必须以/开头才能匹配到对应请求,修改为:

// 正确写法
app.post('/api/grocery', (req, res) => {
  groceryController.addGrocery(req, res)
})

修改后即可解决该报错。

2 其他潜在问题修复(避免报错解决后仍无法正常请求)

2.1 补充JSON请求体解析中间件

当前你只配置了express.urlencoded(),只能解析x-www-form-urlencoded格式的请求参数,如果你在Postman中使用JSON格式传参,需要在index.js中新增JSON解析配置:

app.use(express.urlencoded({extended: true}));
app.use(express.json()); // 新增这行

2.2 修复Model层回调逻辑缺失

现有model层的addGrocery方法仅处理了插入失败的回调,插入成功时没有触发回调,会导致请求一直挂起超时,修改modelGrocery.js的addGrocery方法:

const addGrocery = (grocery, callback) => {
  db.insertOne({
    item: grocery.item,
    quantity: grocery.quantity
  })
    .then(() => callback(null)) // 新增插入成功的回调调用
    .catch(err => callback(err))
 }

2.3 数据库连接校验

确认../../DB/db.js导出的是已成功连接MongoDB的集合实例,服务启动时无数据库连接报错,否则插入操作会返回500错误。

3 功能验证步骤

  1. 保存所有修改后重启Node服务
  2. 打开Postman新建POST请求,地址填入http://localhost:3000/api/grocery
  3. 根据你配置的解析中间件选择请求格式:
  • 若使用JSON格式:Body选择raw,下拉选JSON,填入参数示例:
{
  "item": "牛奶",
  "quantity": 2
}
  • 若使用表单格式:Body选择x-www-form-urlencoded,填入对应key(item、quantity)和value
  1. 发送请求,正常会返回201状态码,查询MongoDB对应集合可看到新增的文档记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:06:03