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

使用Express与Mongoose时,Postman无法向数据库提交API请求

排查 Express + Mongoose Todo API POST 请求失败问题

以下是针对你遇到的「Cannot POST /api/v1/createTodo」错误的常见排查点,按优先级逐一检查:

1. 路由配置匹配错误

  • 检查 todo.js 路由文件是否正确定义 POST 路由:
    // todo.js 正确示例
    const express = require('express');
    const router = express.Router();
    const createTodo = require('../controllers/createTodo');
    
    // 确保路径和请求方法严格匹配
    router.post('/createTodo', createTodo);
    
    module.exports = router;
    
  • 确认 server.js 中路由挂载的前缀与请求路径一致:
    // server.js 挂载路由
    const todoRoutes = require('./routes/todo');
    app.use('/api/v1', todoRoutes); // 此处前缀必须对应请求路径的 /api/v1 部分
    

2. 控制器函数导出与逻辑问题

  • 检查 createTodo.js 是否正确导出处理函数,且包含响应逻辑:
    // createTodo.js 正确示例
    const Todo = require('../models/Todo');
    
    const createTodoHandler = async (req, res) => {
      try {
        const todoData = req.body;
        const newTodo = await Todo.create(todoData);
        res.status(201).json({ success: true, data: newTodo });
      } catch (err) {
        res.status(500).json({ success: false, error: err.message });
      }
    };
    
    module.exports = createTodoHandler;
    
    注意:如果控制器未调用 res.json()/res.send() 等响应方法,会导致请求挂起,但当前错误属于路径匹配失败,需优先排查路由。

3. 服务器启动与端口匹配

  • 确认 server.js 中服务器监听的端口与 Postman 请求的端口一致:
    const PORT = process.env.PORT || 3000;
    app.listen(PORT, () => {
      console.log(`Server running on http://localhost:${PORT}`);
    });
    
    Postman 请求 URL 需严格对应:http://localhost:3000/api/v1/createTodo(替换为你的实际端口)

4. 数据库连接的隐性影响

  • 检查 database.js 是否成功连接 MongoDB:
    const mongoose = require('mongoose');
    
    const connectDB = async () => {
      try {
        await mongoose.connect('mongodb://localhost:27017/todoDB');
        console.log('Database connected');
      } catch (err) {
        console.error('DB connection failed:', err);
        process.exit(1);
      }
    };
    
    module.exports = connectDB;
    
    确保 server.js 中已调用 connectDB(),避免因数据库未连接导致的隐性路由加载失败。

5. Postman 请求配置错误

  • 确认请求方法为 POST,而非 GET/DELETE 等其他方法;
  • 请求头需设置 Content-Type: application/json(若发送 JSON 格式数据);
  • 检查请求体格式:选择 raw -> JSON 格式传递参数,而非 form-data 或 x-www-form-urlencoded(除非你在后端配置了对应的解析中间件)。

若以上排查后问题仍存在,建议贴出各文件的完整代码片段,便于进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:17:15