当前的应用程序逻辑需要按年存储用户记录,如下所示:
balanceRecords: {
2017: {
...,
12: { ... }
},
2018: {
...,
12: { ... }
},
2019: {
...,
8: { ... }
}
}
我尝试通过 users
集合中的 ID 更新文档
// year --> returned from the for loop operation from [2017, 2018, 2019]
firebaseDb.collection(`users`).doc(fyuAqykYpMVnB0h9grdznZgEcaU2)
.update( personalData: {
[year]: {}
})
.then(...)
.catch(...)
这样做我得出的结论是,每次我只是覆盖文档中的 balanceRecords
字段。通常是否可以仅更新深层嵌套字段的属性,或者预计使用子集合
来代替?
最佳答案
首先,doc(``)
没有任何帮助。只需删除它即可。
您可以使用点表示法来更新深层属性。我更改了您的一些示例代码,因为它存在语法错误,并且显然正在更新与您突出显示的属性不同的属性。
firebaseDb.collection('users').doc('fyuAqykYpMVnB0h9grdznZgEcaU2')
.update( `balanceRecords.${year}`: {
// whatever properties you want
})
关于javascript - 只更新集合字段的一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57443147/