【发布时间】:2018-05-11 13:02:59
【问题描述】:
我有两个问题:
第一个:
我想在删除所有对象完成时调用doSomethingOnce(),但我只需要调用它一次,所以//Position1不是调用它的地方,因为它在一个循环中,所以它会被多次调用次。 //Position2 也不起作用,因为根据我的理解和日志测试,它在所有删除完成之前被调用。全部删除完成后如何调用函数?
第二个:
删除多个文档实际上并不能以这种方式工作。 .delete() 在循环中最多执行 3 次,所以当我有 15 个文档时,我需要调用这个 for(String id : Ids) 循环并删除 5 次。我怎样才能删除更多的那 3 个文件?
FirebaseFirestore.getInstance().collection("test")
.whereEqualTo("userID", user.getUid())
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()){
if(task.getResult().size() > 0) {
List<String> Ids = new ArrayList<>();
for(QueryDocumentSnapshot documentSnapshot : task.getResult()) {
Ids.add(documentSnapshot.getId());
}
for(String id : Ids) {
FirebaseFirestore.getInstance().collection("test").document(id).delete().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//Position1
Toast.makeText(SettingsActivity.this, "Deleted", Toast.LENGTH_SHORT).show();
}
});
}
//Position2
} else {
Toast.makeText(SettingsActivity.this, "Nothing found", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(SettingsActivity.this, "Something went wrong", Toast.LENGTH_SHORT).show();
}
}
});
【问题讨论】:
标签: android firebase google-cloud-firestore