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

时间:2017-07-24 15:26:17

标签: android firebase

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

例如,让我们说KoxoxwTqfb50E1Gvi9F推送ID位于我的数据库的许多位置,即在许多密钥下,我想立即删除KoxoxwTqfb50E1Gvi9F的所有条目,而不是静态删除所有参赛作品(因为我知道他们的位置)。

换句话说,有没有办法告诉Firebase"删除整个数据库中的KoxoxwTqfb50E1Gvi9F的所有条目"?

1 个答案:

答案 0 :(得分:7)

要从数据库中删除多个条目,您需要知道所有这些位置(参考)。换句话说,在添加数据的方式中,您也应该删除它。

假设您的数据库如下所示:

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);
}

此方法以原子方式删除所有条目。使用这些路径,您只需调用deleteUser()方法,即可同时更新JSON树中的多个位置。以这种方式同时删除是原子的:要么所有更新都成功,要么所有更新都失败。

希望它有所帮助。