使用mongoose和express更新嵌套数组中的对象

时间:2017-11-10 14:13:25

标签: mongodb express mongoose

以下是每个人的答案:无法完成。

我有一个我继承的庞大架构。它有一个对象数组,我的目标是嵌套在其中的对象数组。 这是架构

board: {
  "lists": [
    { "id": 12,     
      "cards": [
        { "id": 123,
          "cssClass": "default"
        },
        { "id": 124,
          "cssClass": "default"
        }
      ]
    },
    {
      "id": 13,
      "cards":[
      ]
    }
  ]
}

cards.cssClass是我尝试更新的内容。 我有一个静态功能,可以很好地获取特定卡ID的数据:

BoardSchema.statics.findIndivdualCard = function(cardId, cb) {
  return this.aggregate([
    { "$match": { "id": 2826249 } },
    { "$unwind": "$lists" },
    { "$match": { "lists.cards.id": cardId } },
    { "$unwind": "$lists.cards" },
    { "$match": { "lists.cards.id": cardId } },
    { "$project": { "_id": 0, "lists": 1 } }
  ], cb)
}

所以当我有一个put路由时,我会调用静态并更新cssClass:

exports.updateCard = (req, res, next) => {
  const boardId = parseInt(req.params.boardId);
  const cardId = parseInt(req.params.cardId);

  Board.findIndivdualCard(cardId, (err, list) => {
    let card = list[0].lists.cards;
    list[0].lists.cards.cssClass = req.body.cssClass;

    card.save((err) => {
      if (err)
        return next(err);

      res.json(card);
    });
  });
};

但是我收到一条错误消息,说明card.save不是函数。所以我尝试了list(这是回调)并得到了同样的错误。

我在这里做了些蠢事,但不确定是什么。我讨厌架构,但我无能为力。任何帮助表示赞赏。

这令人非常沮丧。这已被标记为重复,但原始副本没有答案。

说真的,这可以做到吗?简单回答。

0 个答案:

没有答案