在我的TimeForm
活动中,我向Firestore添加了一些数据,但没有将它们添加到特定的文档中,因为我需要使用.addSnapshotListener
来读取它们
但是我需要删除一些文件。例如,这是我在星期一集合中的文档:
但是当我尝试删除它们时,这样做:
db.collection("monday").document()
.delete()
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully deleted!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error deleting document", e);
}
});
它没有用,因为我没有设置文档名称。然后,我问如何获取文档ID(此处是页面:Delete data from firestore),它没有发送正确的文档ID。我添加了一个测试按钮,当我单击它时,它显示了带有文档ID的祝酒词,但是每次按此按钮时,它都会显示随机ID,但都不正确。我如何一次一次删除所有这些文件。
答案 0 :(得分:1)
它显示了随机ID,但没有一个是正确的。
之所以发生这种情况,是因为您没有向document()
方法传递任何内容。根据CollectionReference的document()方法的官方文档:
返回一个DocumentReference,该引用指向该集合中具有自动生成的ID的新文档。
因此,每次调用document()
方法而不传递任何参数时,都会得到一个 new auto-generated ID
,它将永远与现有的一个都不匹配。
要删除特定文档,您需要将要删除的文档的特定ID传递给document()
方法。它可能看起来像这样:
db.collection("monday").document("2wZg ... GmfS").delete().addOnSuccessListener(/* ... */);