我在Firebase中更新实时数据库中对象数组的某些属性时遇到了问题。
我的对象看起来像下面(见图片)。
现在我想更新第二个参与者对象的IsComing属性。
目前我使用updateIsComming()函数,但这不是很有说服力,因为我必须重写整个对象。
function updateIsComming() {
const db = getDatabase();
update(ref(db, " your_path/EventModel/" + modelkey ), {
Location: "London",
Participants: [
{ Name: "Bella2", IsComming: "true" },
{ Name: "Tom", IsComing: "true" },
],
});
相反,我只想从数组中引用特定的prop。
参与者[1].IsComming =假;
有什么方法可以直接访问对象的特定数组。
1条答案
按热度按时间tf7tbtn21#
Firebase Realtime Database中不建议使用数组作为数据结构,要了解原因,我建议阅读Best Practices: Arrays in Firebase。
这样做的原因之一是需要读取数组来确定要更新的项的索引。
1.从数据库读取数组。
1.在应用程序代码中更新数组中的必要项。
1.将更新的数组写回数据库。
正如您已经发现的那样,这并不理想,因为这在NoSQL数据库中很常见,所以请考虑一种更适合该用例的替代数据结构。
在这种情况下,要考虑的替代数据结构是:
在这里,我们使用参与者的姓名作为关键字,这意味着:
update(db, "your_path/EventModel/" + modelkey + "/Participants/Tom", false)
.