2017-09-13 64 views
0

我在我的应用程序中创建了一个名为“删除我的账户”的方法,并删除了我创建的一些查询的所有用户资料。如何通过查询从Firebase Storage Android中删除图像?

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

通过这种方式,将删除所有数据,但不能图书中的图片,如果他张贴在这种情况下更多的书,我怎么能解决呢?

回答

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 
});` 
+0

如果我删除孩子,那么它不会删除Storage Reference中的图像本身吗?我怎样才能删除它? – Nicco

+0

这就是对,我建议你为此做一个CloudFunction。有人在数据库中进行更改(创建,编辑或删除)时可以使用CloudFunctions。您可以在[文档](https://firebase.google.com/docs/functions/)中阅读它。删除书籍后,您可以将其删除。我编辑了我的答案,所以你有一个暗示来制作这样的听众。 –