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

Next.js + Mongoose创建MongoDB空文档问题求助

解决Next.js + Mongoose插入空文档问题

问题诊断

你遇到的仅生成_id和__v空文档的问题,核心原因是API路由未正确解析JSON请求体,导致req.body为空对象,Mongoose基于空对象创建文档,自然只包含默认字段。

解决方案

Next.js的API路由默认不会自动解析JSON请求体,需要手动添加解析逻辑,或使用内置工具处理:

  1. 在API路由中添加请求体解析
    在你的接口文件(如pages/api/raceresults.js)顶部,加入解析逻辑:

    import { parseBody } from 'next/dist/server/api-utils/node'
    
    export default async function handler(req, res) {
      // 针对POST请求解析JSON体
      if (req.method === 'POST') {
        req.body = await parseBody(req, '1mb')
      }
    
      switch (req.method) {
        case 'POST':
          try {
            const newResultDoc = await Raceresult.create(req.body);
            res.status(201).json({ success: true, data: newResultDoc })
          } catch (error) {
            res.status(400).json({ success: false, error: error.message })
          }
          break
        default:
          res.status(400).json({ success: false })
          break
      }
    }
    
  2. 检查请求头配置
    确保ThunderClient发送请求时,请求头包含Content-Type: application/json,缺少该头会导致解析逻辑失效,req.body依然为空。

  3. 验证请求体是否正确接收
    在POST逻辑中添加日志,确认数据是否被正确获取:

    case 'POST':
      console.log('Received request body:', req.body) // 查看控制台输出
      try {
        // 创建文档逻辑
      }
    

额外排查点

如果以上方法无效,检查以下内容:

  • 确认模型字段名name与请求体中的字段名完全一致(大小写敏感)
  • 给Schema字段添加必填校验,空请求体时会抛出错误,便于排查:
    const raceresultSchema = new mongoose.Schema({
        name: { type: String, required: true },
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:25:45