Android Firebase-如何一次删除多个条目?

Android Firebase-如何一次删除多个条目?,android,firebase,Android,Firebase,如何删除给定推送ID的所有条目 例如,假设koxowtqfb50e1gvi9f推送ID位于我数据库的许多位置,即在许多键下,我想一次删除koxowtqfb50e1gvi9f的所有条目,而不是静态删除所有条目(因为我知道它们的位置) 换句话说,是否有办法告诉Firebase“删除整个数据库中KoxoxwTqfb50E1Gvi9F的所有条目”要从数据库中删除多个条目,您需要知道所有这些位置(参考)。换句话说,在添加数据的过程中,也应该删除数据 假设您的数据库如下所示: Firebase-root

如何删除给定推送ID的所有条目

例如,假设
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()方法,不是在更新数据时,因为每次调用时都会创建一个新的随机键。为了创建更新,您需要知道所有节点名称,而不需要创建新的节点名称。