我试图在我的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
}
任何帮助都会很棒! :)
答案 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()函数。