是否在不删除其他嵌套对象的情况下更新firestore文档中嵌套对象中的字段



我正在进行一个flutter项目,我使用Firebase Firestore作为我的数据库。目前,我在使用云功能时遇到了问题。这个函数应该更新数据库中的嵌套对象。

结构如下:

{
"plannings" : {
"0" : {
"finalSchedule": null, 
"teacherName": "----", 
"endDate": "8-11-2020", 
"learnerAvailabilities": {
"3vLYq8Zlm6Z2KkGDbdu3rwQWMTd2": null, 
"DTtN4j1fngfjZM3p8v5JVyc7hrn2": null, 
"ekzj2Iy8JngtourPvHQyQAHJx563": null, 
"Ss9QV7qFVvXBzTe3R6lmHkMBEWn1": null, 
"tzEe2jhcr7hn1X1gu7c8BfuyO5a2": null, 
"otlqIURWB5SZeChzhoaQOmNEi6m2": null,
}, 
"name": "----", 
"id": "#5a066",
}
},
"Learners" : {},
"etc..." : {},
}

我希望能够单独更新每个"学习者可用性"(ID(的值。所以我尝试了这个:

school.update({
[`plannings.${key}.learnerAvailabilities.${userUID}`]: newSchoolUserAvailabilityObject,
});

但当我这样做时,除了更改的ID外,所有ID都会被删除。并且";finalSchedule"teacherName"endDate"name"id";也不见了。所以当我改变";3vLYq8Zlm6Z2KkGDbdu3rwQWMTd2":

{
"plannings" : {
"0" : {
"learnerAvailabilities": {
"3vLYq8Zlm6Z2KkGDbdu3rwQWMTd2": (new value), 
}, 
}
},
"Learners" : {},
"etc..." : {},
}

我也不能仅仅取代";plannings";对象,因为当两个更新(.update(几乎同时发生时会引起麻烦。

问题是"plannings";字段最初是一个数组,但后来您将其更新为映射。Firestore不提供按索引更新数组项的方法。如果要修改数组项,必须读取整个文档,修改内存中的数组,然后用数组的新内容更新文档。

相关内容

  • 没有找到相关文章

最新更新