Android Firebase-如何一次删除多个条目?
如何删除给定推送ID的所有条目 例如,假设Android Firebase-如何一次删除多个条目?,android,firebase,Android,Firebase,如何删除给定推送ID的所有条目 例如,假设koxowtqfb50e1gvi9f推送ID位于我数据库的许多位置,即在许多键下,我想一次删除koxowtqfb50e1gvi9f的所有条目,而不是静态删除所有条目(因为我知道它们的位置) 换句话说,是否有办法告诉Firebase“删除整个数据库中KoxoxwTqfb50E1Gvi9F的所有条目”要从数据库中删除多个条目,您需要知道所有这些位置(参考)。换句话说,在添加数据的过程中,也应该删除数据 假设您的数据库如下所示: Firebase-root
koxowtqfb50e1gvi9f
推送ID位于我数据库的许多位置,即在许多键下,我想一次删除koxowtqfb50e1gvi9f
的所有条目,而不是静态删除所有条目(因为我知道它们的位置)
换句话说,是否有办法告诉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);
}
private静态void deleteUser(字符串userId,字符串groupId){
Map Map=newhashmap();
map.put(“/Users/”+userId+“/”,null);
put(“/Groups/”+groupId+”/Users/“+userId+”/”,new HashMap().put(userId,null));
//其他地点
databaseReference.updateChildren(地图);
}
此方法自动删除所有这些条目。使用这些路径,只需调用deleteUser()
方法,即可对JSON树中的多个位置执行同步更新。以这种方式进行的同时删除是原子性的:要么所有更新成功,要么所有更新失败
希望能有帮助。我从来没有听说过。你的情况到底有什么必要?你想在客户端保持简单吗?你只是想确保所有内容都被删除吗?你必须知道可以显示内容的所有位置,并自己管理它们。数据库不理解您的数据结构-它只是一个容器,您可以做任何您想做的事情。如果没有自定义函数,我不确定这是否可能。您可以研究Firebase函数,通过这些函数,您可以为特定位置创建侦听器,然后让它删除同一个键的所有其他值。请参阅我的答案。是否需要按键来同时进行更新?@DragonFire否,添加数据时需要push()方法,不是在更新数据时,因为每次调用时都会创建一个新的随机键。为了创建更新,您需要知道所有节点名称,而不需要创建新的节点名称。