数据库擦除后,Firebase不会删除文件

时间:2018-01-17 19:43:00

标签: android firebase

我有一个数据库,比方说300个文件链接。这些文件存储在我的存储中,如果我手动删除包含所有链接的数据库树,则文件仍在存储中,之后如果用户继续上传文件。生成链接和新文件,但我也保留旧文件。有没有办法,如果我从数据库树中删除我的文件链接,孩子们也会从存储中删除它们?

我真的在考虑这个问题,因为我认为调试从网站手动删除数据库有点麻烦,但文件仍在那里。

1 个答案:

答案 0 :(得分:1)

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

Firebase-database
    |
    --- links
          |
          --- linkId1: "http://..."
          |
          --- linkId2: "http://..."
          |
          --- linkId3: "http://..."

要删除Firebase Storage中与这些链接对应的所有文件,请使用以下代码:

StorageReference storageRef = storage.getReference();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference linksRef = rootRef.child("links");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String link = ds.getValue(String.class);
            storageRef.child(link).delete();
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
linksRef.addListenerForSingleValueEvent(eventListener);