繁体   English   中英

使用其 autoID 删除 Firebase Firestore 上的文档

[英]Deleting a document on Firebase Firestore using its autoID

我做了一个汽车管理应用程序。

用户使用他的电子邮件地址注册并登录后,他添加了车辆并在其下输入其他信息。

这些车辆的车牌显示在回收站视图中。

单击盘子会将您带到一个显示已填写信息的屏幕。

我在这个屏幕上放了一个删除按钮。

但是,正如我在代码中所示,如何显示打开页面的自动生成 ID 以将其删除?

  1. 显示板块的页面板块页面
  2. 包含点击板块和删除按钮(红框)信息页的页面
  3. 我的 Firebase Firestore 最小显示Firebase Firestore

我不知道如何编码。

我正在尝试观看视频课程并按照我想要在脑海中制作应用程序的方式对其进行调整。

这个应用程序是我来到的最后一点。

就我看到前面问题的答案和视频,我无法回答这个问题。

我知道这会很困难,但是你能告诉这个无知的人正确的方法吗?

public void deleteCarsClicked(View view) {
    firebaseFirestore.collection("Arabalar").document("How do I show the ID of the opened page here.")
            .delete()
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void unused) {
                    Intent intent = new Intent(RstActivity.this, CarsActivity.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(intent);
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(RstActivity.this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
                }
            });
}

正如@FrankvanPuffelen 在他的评论中提到的那样,要能够删除特定文档,您需要知道它的文档 ID。 例如,如果您有以下架构:

db-root
 |
 --- licensePlates (collection)
      |
      --- $licensePlateId (document)
            |
            --- code: "34FHR147"
            |
            --- licensePlateId: "FirestoreDocumentId"

要删除此文档,您可以调用 delete() ,如下所示:

FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("licensePlates")
  .document("FirestoreDocumentId")
  .delete()
  .addOnCompleteListener(/*.../*);

但是,如果您不知道“FirestoreDocumentId”,则必须执行查询:

Query queryByLicensePlate = db.collection("licensePlates").whereEqualTo("code", "34FHR147");
queryByLicensePlate.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (QueryDocumentSnapshot document : task.getResult()) {
                document.getReference().delete().addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> deleteTask) {
                        if (deleteTask.isSuccessful()) {
                            Log.d(TAG, "Document successfully deleted.");
                        } else {
                            Log.d(TAG, "Error deleting document: ", deleteTask.getException());
                        }
                    }
                });
            }
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM