【问题标题】:post creates document but data not sent发布创建文档但未发送数据
【发布时间】:2019-08-13 22:10:29
【问题描述】:

使用 mongoose 和 express 将表单数据发送到 mongodb - 文档是使用 id 创建的,但不会发送表单数据

架构

const reportSchema = mongoose.Schema({
      project: [
        {
        studio: String,
        code: String,
        name: String
        }
      ],
      },
    {
      collection: 'reports'
    }
);

module.exports = mongoose.model('Report', reportSchema);

路线

app.post("/", (req, res) => {
  const report = new Report({
    project: {
      studio: req.body.studio,
      code: req.body.code,
      name: req.body.name
    }
  });
  report.save(err => {
    if (err) return res.status(404).send({ message: err.message });

    return res.send({ report });
  });

在 postman 中发送 post 请求会创建一个包含空数组的文档。

帖子看起来像

{
    "project": {
        "studio": "main",
        "code": "411",
        "name": "some project"
    }
}

感谢您的帮助

更新路线

app.post("/", (req, res) => {
  const report = new Report({
    project: {
      studio: req.body.project.studio,
      code: req.body.project.code,
      name: req.body.project.name
    }
  });

返回一个未定义的错误

【问题讨论】:

  • 你能显示你在邮递员中发送的内容吗?
  • 请检查我的回答。
  • 已更新以包含项目 @CuongLeNgoc 返回“未定义错误”
  • 可以显示邮递员请求的完整截图吗?
  • 标头设置为内容类型 application/json - 仍然得到未定义的错误

标签: mongodb express mongoose


【解决方案1】:

您在req.body 中发送了一个带有project 字段的对象,因此您需要以这种方式获取它:

const report = new Report({
  project: {
    studio: req.body.project.studio,
    code: req.body.project.code,
    name: req.body.project.name
  }
});

如果还是不行,可能你请求的Content-Type不是application/json。尝试将其添加到请求标头中。

注意:确保您的应用中有 body-parser。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2022-08-14
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    相关资源
    最近更新 更多