如何通过查询从Firebase存储Android删除图像?

时间:2017-09-13 14:29:25

标签: android firebase firebase-realtime-database firebase-storage

我正在我的应用程序中创建一个名为“删除我的帐户”的方法,并删除我创建了一些查询的所有用户内容。

这是数据库情况: https://i.stack.imgur.com/eaUYh.jpg

正如您所看到的,该用户发布了一张带有自己图片的图书,猜测该用户发布了更多图书,如何删除用户发布的所有图书?

这是我要删除的代码:

private DatabaseReference mUserBook;

private Query user_book;

mUserBook = FirebaseDatabase.getInstance().getReference("Books");

user_book = mUserBook.orderByChild("uid").equalTo(currentUid);

user_book.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            if(dataSnapshot.getValue() != null){

                for(DataSnapshot book_Snap : dataSnapshot.getChildren()){

                    book_Snap.getRef().removeValue();
                }
            }

通过这种方式,如果他在这种情况下发布了更多书籍,它将删除所有数据但不删除书籍图像,我该如何解决?

1 个答案:

答案 0 :(得分:0)

问题在于您删除了整本书。尝试使用book_Snap.getRef().child('image').removeValue();。这样它只会删除图像子。

编辑:

要从存储中删除图书本身,我建议您使用Cloud Functions。删除书籍的听众如下:

// Listens on removing a book
exports.removeBookImageFromStorage = functions.database.ref('/Books/{bookId}/image/').onDelete(event => {
    // Remove image from the Storage - you can get the imageUrl or the bookId from the event variable
});`