我正在开发一个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)
为每个用户创建的文档仅包含集合,因此,Firestore仅创建“虚拟文档”。那么,如何检查该文档是否存在?
firebaseFirestore
.collection("users")
.document(firestoreUser.uid)
.get()
.addOnSuccessListener { doc->
if(doc.exists()) {
} else {
}
}
这是行不通的,因为它只是一个“虚拟文档”,实际上并不存在
答案 0 :(得分:3)
Firestore只会创建一个“虚拟文档”。
它不创建任何文档。该文档不存在,因为您根本没有创建它。您所做的只是在一个不存在的文档下创建一个子集合。换句话说,您只是为集合中的文档保留了一个ID,然后在其下创建了一个子集合。
要记住的一件事,在Cloud Firestore中,文档和子集合不能像文件系统文件和目录那样工作。如果在文档下创建子集合,则它不隐式创建任何父文档。子集合不以任何方式绑定到父文档。
因此请注意,该位置没有物理文档,但是该位置下还有其他数据,即exampleCollection
子集合。请记住,只有当您至少编写一个可以在其中保存值的属性时,您所谈论的“虚拟文档”才成为真实文档。
因此,在您的情况下,以下语句:
if(doc.exists())
将始终被评估为false
。