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

表单数据提交MongoDB后无法返回显示对象的问题求助

问题排查与修复方案

核心问题梳理

你的POST接口存在以下关键错误,导致提交后无法正常返回并显示数据:

  1. 验证逻辑错误
    代码里的判断条件重复写了!issue_title,漏掉了issue_text的校验:

    // 错误写法
    if (!issue_title || !issue_title || !created_by)
    // 正确写法
    if (!issue_title || !issue_text || !created_by)
    
  2. 字段拼写错误
    模型实例里的asigned_to是拼写错误,应该是assigned_to,和请求参数的字段名一致,否则该字段无法正确赋值。

  3. 未持久化数据到数据库
    你只是创建了IssueModel的实例,但没有调用save()方法将数据保存到MongoDB,直接返回实例的话,不仅数据不会被存储,而且实例的状态可能不符合前端预期。

  4. 未定义的_id变量
    代码里手动指定_id:_id,但_id变量从未声明过,mongoose会自动生成唯一ID,不需要手动设置这个字段。

  5. 日期字段处理不当
    使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:23:38