如何在现有的Javascript对象中添加一个嵌套对象

5
我试图在我的 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个回答

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
  }
}

3

好的,我在这里为您翻译一段关于 IT 技术的内容。为了更容易修改返回的 mongoose 对象,我需要将其转换为 JavaScript 对象。

currentMembership = currentMembership.toObject();

这样我就可以编辑对象了。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接