以下是每个人的答案:无法完成。
我有一个我继承的庞大架构。它有一个对象数组,我的目标是嵌套在其中的对象数组。 这是架构
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(这是回调)并得到了同样的错误。
我在这里做了些蠢事,但不确定是什么。我讨厌架构,但我无能为力。任何帮助表示赞赏。
这令人非常沮丧。这已被标记为重复,但原始副本没有答案。
说真的,这可以做到吗?简单回答。