如何在当前现有的javascipt对象中添加嵌套对象

时间:2019-12-10 19:41:33

标签: javascript node.js json backend

我试图在我的javascript对象中添加一个嵌套对象。我无法在网络上找到任何解决方案。 我有一个来自服务器的响应,在将相同数据存储到数据库之前,我需要设置一些值。

这是对象:

"currentMembership": {
                    "messages": {
                        "isUnlimited": false,
                        "count": 5
                    },
                    "likes": {
                        "isUnlimited": false,
                        "count": 5
                    },
                    "matches": {
                        "isUnlimited": false,
                        "count": 0,
                        "validFor": 0
                    },
                    "backtrack": {
                        "isUnlimited": false,
                        "count": 0
                    }
                }

并且我正在尝试向我的某些对象中添加一个dailyCount对象,以使返回的对象更新为:

"currentMembership": {
                    "messages": {
                        "dailyCount": {
                            "date": "2019-12-10T19:33:22.793Z"
                            "count": 5
                        },
                        "isUnlimited": false,
                        "count": 5
                    },
                    "likes": {
                        "dailyCount": {
                            "date": "2019-12-10T19:33:16.664Z",
                            "count": 5
                        },
                        "isUnlimited": false,
                        "count": 5
                    },
                    "matches": {
                        "dailyCount": {
                            "date": "2019-12-10T19:33:16.697Z",
                            "count": 0
                        },
                        "isUnlimited": false,
                        "count": 0,
                        "validFor": 0
                    },
                    "backtrack": {
                        "dailyCount": {
                            "date": "2019-12-10T19:33:16.701Z",
                            "count": 0
                        },
                        "isUnlimited": false,
                        "count": 0
                    },
                    "hasPremiumPlan": false,
                    "hasDMPlan": false,
                    "filters": false
                }

任何帮助都会很棒! :)

2 个答案:

答案 0 :(得分:5)

您可以使用for...in遍历对象的属性。

var i;
for (i in currentMembership) {
  currentMembership[i].dailyCount = {
    date: "2019-12-10T19:33:16.701Z",
    count: 0
  }
}

如果您仅针对某些属性,请使用这些键创建一个数组并在这些键上循环。

for (var keys = ['messages', 'likes', 'matches', 'backtrack'], i = 0, j = keys.length; i < j; i++) {
  currentMembership[keys[i]].dailyCount = {
    date: "2019-12-10T19:33:16.701Z",
    count: 0
  }
}

答案 1 :(得分:3)

好的,所以我试图更改作为猫鼬对象返回的对象,因此我无法更改它,但是在转换为javascript对象之后。 currentMembership = currentMembership.toObject(); 这样我可以编辑对象。

我还可以在查找查询中使用lean()函数。