表单数据提交MongoDB后无法返回显示对象的问题求助
问题排查与修复方案
核心问题梳理
你的POST接口存在以下关键错误,导致提交后无法正常返回并显示数据:
验证逻辑错误
代码里的判断条件重复写了!issue_title,漏掉了issue_text的校验:// 错误写法 if (!issue_title || !issue_title || !created_by) // 正确写法 if (!issue_title || !issue_text || !created_by)字段拼写错误
模型实例里的asigned_to是拼写错误,应该是assigned_to,和请求参数的字段名一致,否则该字段无法正确赋值。未持久化数据到数据库
你只是创建了IssueModel的实例,但没有调用save()方法将数据保存到MongoDB,直接返回实例的话,不仅数据不会被存储,而且实例的状态可能不符合前端预期。未定义的
_id变量
代码里手动指定_id:_id,但_id变量从未声明过,mongoose会自动生成唯一ID,不需要手动设置这个字段。日期字段处理不当
使用Date()会返回字符串格式的日期,应该用new Date()生成Date类型,或者在模型里设置默认值为Date.now,避免手动赋值。
修复后的POST接口代码
.post(async function (req, res){ let project = req.params.project; const { issue_title, issue_text, created_by, assigned_to = "", status_text = "" } = req.body; // 修复验证逻辑 if (!issue_title || !issue_text || !created_by){ return res.json({error: 'required field(s) missing'}); } try { // 修复字段拼写,去掉手动_id,使用正确的日期类型 const newIssue = new IssueModel({ issue_title, issue_text, created_by, assigned_to, status_text, created_on: new Date(), updated_on: new Date(), open: true }); // 保存到数据库 const savedIssue = await newIssue.save(); // 返回保存后的文档 res.json(savedIssue); } catch (err) { // 处理数据库错误 res.json({ error: 'failed to save issue', details: err.message }); } })
额外建议
- 检查你的
IssueModel定义,确保字段名和接口里的一致,比如assigned_to是否存在、是否允许空值 - 前端部分要确保正确处理接口返回的JSON数据,比如提交表单后是否正确解析响应并渲染
- 可以在
IssueModel里设置日期字段的默认值,避免手动赋值:created_on: { type: Date, default: Date.now }, updated_on: { type: Date, default: Date.now }
内容的提问来源于stack exchange,提问作者NoobCodes
相关产品推荐
相关产品推荐

