【问题标题】:How do I delete images from Firebase Storage Android through a Query?如何通过查询从 Firebase Storage Android 中删除图像?
【发布时间】:2017-09-13 14:29:25
【问题描述】:

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

这是数据库情况: 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();
                }
            }

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

【问题讨论】:

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


    【解决方案1】:

    问题是您删除了整本书。尝试使用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
    });`
    

    【讨论】:

    • 如果我删除孩子,那么它不会删除存储参考中的图像本身,对吗?我怎样才能删除它?
    • 没错,我建议您为此制作一个 CloudFunction。当有人在数据库中进行更改(创建、编辑或删除)时,可以使用 CloudFunctions。您可以在docs 中了解它。删除一本书后,您可以在存储中删除它。我编辑了我的答案,所以你有一个提示让这样一个听众。
    猜你喜欢
    • 2020-10-22
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2017-08-13
    • 2019-05-25
    • 2020-12-18
    • 2019-09-25
    • 1970-01-01
    相关资源
    最近更新 更多