MongoDB无法正确保存AJAX请求传递的数据问题排查
问题排查与解决方案
核心问题是后端无法解析前端发送的请求体,导致req.body为空/undefined,最终触发了代码里的|| ' '默认值,存入空格。以下是具体修复步骤:
1. 后端必须配置请求体解析中间件
如果你的项目用Express框架,必须在路由挂载之前添加JSON解析中间件,否则Express无法自动解析JSON格式的请求体,req.body会是undefined。
在你的Express应用初始化代码中添加:
const express = require('express'); const app = express(); // 这行必须放在路由注册之前 app.use(express.json()); // 然后再挂载你的路由 app.use('/api', router); // 替换成你实际的路由前缀
2. 前端AJAX请求格式修正
你当前的AJAX配置有两个问题:
- 没有设置
Content-Type: application/json,后端不知道请求体是JSON格式 processData: false时,直接传对象会导致请求体变成[object Object],无法被解析
修改v2Request函数:
function v2Request(data) { return $.ajax({ type: "post", headers: { "Accept": "application/json; odata=verbose", "Content-Type": "application/json" // 新增:告诉后端请求体是JSON }, url: "URL/v2", data: JSON.stringify(data), // 把对象转为JSON字符串 processData: false, dataType: "json" }); }
3. 验证修复效果
重启服务后,先看后端控制台的console.log(req.body)输出:
- 如果能打印出包含
firstName和secondName的正确对象,说明解析成功 - 此时再存入MongoDB,就能得到正确的数据,不会再存入空格
内容的提问来源于stack exchange,提问作者Evgeniy Mokrushin
相关产品推荐
相关产品推荐

