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

React项目前端传值至后端时出现Mongoose数据未定义错误

问题解决:前端提交表单后后端接收数据为undefined导致Mongoose验证失败

问题根源

你的问题出在前端fetch请求未设置正确的请求头,导致后端无法解析JSON格式的请求体,所以req.body为空对象,解构出的name/email/message自然都是undefined,触发Mongoose的必填字段验证错误。

Postman测试正常是因为Postman会自动为JSON请求添加Content-Type: application/json头,而原生fetch默认不会添加这个头。

修复步骤

1. 前端修改fetch请求,添加请求头

在ContactUs组件的handleSubmit函数中,为fetch请求添加headers配置:

const handleSubmit = async (e) => {
  e.preventDefault()

  const formm = {name, email, message}

  const response = await fetch('/api/forms',{
    method: 'POST',
    headers: {
      'Content-Type': 'application/json' // 新增这行配置
    },
    body: JSON.stringify(formm)
  })
  const json = await response.json()

  // 其余代码保持不变...
}

2. 确认后端已配置JSON解析中间件

确保你的后端入口文件(如server.js或app.js)中已经添加了解析JSON请求体的中间件:

const express = require('express');
const app = express();

// 必须添加此中间件,用于解析JSON格式的请求体
app.use(express.json());

// 后续路由、数据库连接等配置...

验证修改

修改完成后重启前后端服务,提交表单时后端控制台应能正常打印收到的name/email/message数据,Mongoose验证将通过并成功创建文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:28:33