簡體   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