如何通过查询从Firebase Storage Android中删除图像?
问题描述:
我在我的应用程序中创建了一个名为“删除我的账户”的方法,并删除了我创建的一些查询的所有用户资料。如何通过查询从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();
}
}
通过这种方式,将删除所有数据,但不能图书中的图片,如果他张贴在这种情况下更多的书,我怎么能解决呢?
答
问题是您删除了整本书。尝试使用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
});`
如果我删除孩子,那么它不会删除Storage Reference中的图像本身吗?我怎样才能删除它? – Nicco
这就是对,我建议你为此做一个CloudFunction。有人在数据库中进行更改(创建,编辑或删除)时可以使用CloudFunctions。您可以在[文档](https://firebase.google.com/docs/functions/)中阅读它。删除书籍后,您可以将其删除。我编辑了我的答案,所以你有一个暗示来制作这样的听众。 –