簡體   English   中英

Firestore:檢查虛擬文檔是否存在

[英]Firestore: Check if virtual document exists

我正在開發一個 android 應用程序,用戶可以在其中注冊。 為了保存用戶數據,我使用了 Firebase Firestore。 因此,當用戶注冊時,會創建一個以FirebaseUser.userId作為 id 的文檔。

val exampleObject = ExampleObject(exampleData1, exampleData2)
val firestoreUser = FirebaseAuth.getInstance().currentUser
firebaseFirestore
   .collection("users")
   .document(firestoreUser.uid)
   .collection("exampleCollection")
   .document("exampleDocument")
   .set(exampleObject)

為每個用戶創建的文檔僅包含 collections,因此,Firestore 僅創建一個“虛擬文檔”。 那么,如何檢查該文檔是否存在?

firebaseFirestore
    .collection("users")
    .document(firestoreUser.uid)
    .get()
    .addOnSuccessListener { doc->
        if(doc.exists()) {

        } else {

        }
    }

這不起作用,因為它只是一個“虛擬文檔”,並不真正存在

Firestore 只會創建一個“虛擬文檔”。

不會創建任何文檔。 該文檔不存在,因為您根本沒有創建它。 您所做的只是在一個從未存在的文檔下創建一個子集合。 換句話說,您只是為集合中的文檔保留了一個 id,然后您在其下創建了一個子集合。

要記住的一件事是,在 Cloud Firestore 中,文檔和子集合不像文件系統文件和目錄那樣工作。 如果您在文檔下創建子集合,它不會隱式創建任何父文檔。 子集合不以任何方式綁定到父文檔。

因此請注意,該位置沒有物理文檔,但該位置下還有其他數據,即exampleCollection子集合。 請記住,只有當您至少編寫一個可以在其中保存值的屬性時,您正在談論的“虛擬文檔”才會成為真正的文檔。

因此,在您的情況下,以下語句:

if(doc.exists())

將始終評估為false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM