我该如何删除all给定推送 ID 的条目?
例如,假设KoxoxwTqfb50E1Gvi9F
推送 ID 位于我的数据库的许多位置,即在许多键下,我想删除所有条目KoxoxwTqfb50E1Gvi9F
立即而不是静态删除所有条目(因为我知道它们的位置)。
换句话说,有没有办法告诉 Firebase“删除所有条目KoxoxwTqfb50E1Gvi9F
整个数据库”?
为了从数据库中删除多个条目,您需要知道所有这些位置(引用)。换句话说,在你添加数据的同时,你也应该删除它。
假设您的数据库如下所示:
Firebase-root
|
--- Users
| |
| --- userUid1
| | |
| | --- //user1 data
| |
| --- userUid2
| |
| --- //user2 data
|
--- Groups
|
--- groupId1
| |
| --- //group1 data
| |
| --- Users
| |
| --- userUid1: true
| |
| --- userUid3: true
|
--- groupId2
|
--- //group2 data
我建议您使用以下方法:
private static void deleteUser(String userId, String groupId) {
Map<String, Object> map = new HashMap<>();
map.put("/Users/" + userId + "/", null);
map.put("/Groups/" + groupId + "/Users/" + userId + "/", new HashMap<>().put(userId, null));
//other locations
databaseReference.updateChildren(map);
}
此方法自动删除所有这些条目。使用这些路径,您可以通过一次调用同时更新 JSON 树中的多个位置deleteUser()
方法。以这种方式进行的同时删除是原子的:要么所有更新成功,要么所有更新失败。
希望能帮助到你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)