在Firestore中无法获取正确的文档ID

时间:2018-09-15 16:13:22

标签: java android firebase google-cloud-firestore

在我的TimeForm活动中,我向Firestore添加了一些数据,但没有将它们添加到特定的文档中,因为我需要使用.addSnapshotListener来读取它们 但是我需要删除一些文件。例如,这是我在星期一集合中的文档:

enter image description here

但是当我尝试删除它们时,这样做:

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,但都不正确。我如何一次一次删除所有这些文件。

1 个答案:

答案 0 :(得分:1)

  

它显示了随机ID,但没有一个是正确的。

之所以发生这种情况,是因为您没有向document()方法传递任何内容。根据CollectionReference的document()方法的官方文档:

  

返回一个DocumentReference,该引用指向该集合中具有自动生成的ID的新文档。

因此,每次调用document()方法而不传递任何参数时,都会得到一个 new auto-generated ID,它将永远与现有的一个都不匹配。

要删除特定文档,您需要将要删除的文档的特定ID传递给document()方法。它可能看起来像这样:

db.collection("monday").document("2wZg ... GmfS").delete().addOnSuccessListener(/* ... */);