如何更新 Firebase 中的所有子项

How to update all children in Firebase?

本文关键字:Firebase 何更新 更新      更新时间:2023-09-26

我正在尝试在火碱上更新所有子级树。例如像这样:

firebase.child("auctions").child().update({a: true});

这给了我错误,因为孩子是空的。有什么办法可以更新拍卖的所有子项吗?

你不需要那个空的.child()调用。

firebase.child("auctions").update({a: true});要做的是改变 /auctions/a/whatever/auctions/a/true.

如果您真的想"更新树上的所有子级",那么.set可能会更好,因为它会将端点上的所有数据替换为您提供给它的对象。所以如果你跑了 firebase.child("auctions").set({a: true});那么/auctions下的所有内容都将替换为{a: true}

如果你不想炸掉/auctions下的一切,而是想炸掉auctions/a下的一切,你可以做。 firebase.child("auctions/a").set(true);

有多种方法可以满足您的需求。我只是不能100%确定你到底需要什么。

在某些时候,您需要遍历所有子项。这是一种简单的方法:

firebase.child("auctions").on('value', function(snapshot) {
    snapshot.ref().update({a: true}); // or snapshot.ref if you're in SDK 3.0 or higher
});

或者,您可以先收集所有更新,然后将它们作为一个(可能很大)更新语句发送到 Firebase:

var updates = {};
firebase.child("auctions").on('value', function(snapshot) {
    updates["auctions/"+snapshot.key+"/a"] = true;
});
snapshot.ref().update(updates);  // or snapshot.ref if you're in SDK 3.0 or higher

这两个代码段完成相同的操作,但后者发送单个命令,因此在网络故障时更具弹性。