【问题标题】:Push object onto array of objects in array of objects mongoose将对象推入对象数组中的对象数组中
【发布时间】:2023-03-29 18:24:01
【问题描述】:

我正在尝试将对象添加到组件数组中。但是这个组件数组位于项目对象内的"scenes" 数组中。这是我的断路和项目模型,以显示模型中所有字段的位置。我似乎无法弄清楚这一点,我花了几个小时来诊断问题。

{
    "_id": {
        "$oid": "5c01c26ec028296289f53b00"
    },
    "update": false,
    "publishStatus": "draft",
    "user": {
        "$oid": "5bee30aed343c30016a664b5"
    },
    "projectName": "Griffith Uni",
    "description": "sdaidjasidjasidjiasdjsad",
    "scenes": [
        {
            "_id": {
                "$oid": "5c01c29dc028296289f53b02"
            },
            "sceneName": "Persona Choose",
            "components": []
        },
        {
            "_id": {
                "$oid": "5c01c2acc028296289f53b04"
            },
            "sceneName": "Home Menu",
            "components": []
        },
        {
            "_id": {
                "$oid": "5c0208b16c550072b6b3b499"
            },
            "sceneName": "The Smiths",
            "components": []
        }
    ],
    "lastUpdated": {
        "$date": "2018-11-30T23:06:22.173Z"
    },
    "__v": 0
}

router.post(
  "/projects/scenes/components/new",
  passport.authenticate("jwt", { session: false }),
  (req, res) => {
    const newComp = new Components({
      content: req.body.content
    });
    Project.findById(
      { _id: req.body.projectID },
      Project.findByIdAndUpdate(
        { _id: req.body.sceneID },
        { $push: { components: newComp } },
        () => res.json(newComp)
      )
    );
  }
);

【问题讨论】:

  • 有3个components,你必须指定你的问题。添加到所有?第一个?第二个?
  • 您可能应该澄清您使用的术语:“项目”是您展示的对象吗? “projects”是数据库中集合的名称?

标签: javascript mongodb express mongoose


【解决方案1】:

如果我理解正确,您可以使用以下代码。

 router.post(
   "/projects/scenes/components/new",
   passport.authenticate("jwt", { session: false }),
   async (req, res) => {
     const newComp = new Components({
       content: req.body.content
     });

     await Project.findOneAndUpdate(
       { _id: req.body.projectID, "scenes._id": req.body.sceneID },
       {
        $push: { "scenes.$.components": newComp }
       }
     );

    res.json(newComp);
  }
);

a similar issue

【讨论】:

  • { "_id": { "$oid": "5c01c26ec028296289f53b00" }, "update": false, "publishStatus": "draft", "user": { "$oid": "5bee30aed343c30016a664b5 " }, "projectName": "Griffith Uni", "description": "sdaidjasidjasidjiasdjsad", "lastUpdated": { "$date": "2018-11-30T23:06:22.173Z" }, "__v": 0, “场景”:[{“组件”:[],“_id”:{“$oid”:“5c0343c694f36e885fef4cc8”},“场景名称”:“选择角色”}]}code
  • 项目对象的模拟数据
  • @exodus2017 上面的代码没有完成你的目标吗?我创建了一个与您的模型匹配的模型,并且处理程序按照我的预期进行。
猜你喜欢
  • 2017-12-05
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2021-01-17
相关资源
最近更新 更多