热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Firestore:检查虚拟文档是否存在

我正在开发一个Android应用,用户可以在其中注册。为了保存用户数据,我使用了FirebaseFir

我正在开发一个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 {
}
}

这是行不通的,因为它只是一个“虚拟文档”,实际上并不存在




  

Firestore只会创建一个“虚拟文档”。

创建任何文档。该文档不存在,因为您根本没有创建它。您所做的只是在一个不存在的文档下创建一个子集合。换句话说,您只是为集合中的文档保留了一个ID,然后在其下创建了一个子集合。

要记住的一件事,在Cloud Firestore中,文档和子集合不能像文件系统文件和目录那样工作。如果在文档下创建子集合,则它隐式创建任何父文档。子集合不以任何方式绑定到父文档。

因此请注意,该位置没有物理文档,但是该位置下还有其他数据,即exampleCollection子集合。请记住,只有当您至少编写一个可以在其中保存值的属性时,您所谈论的“虚拟文档”才成为真实文档。

因此,在您的情况下,以下语句:

if(doc.exists())

将始终被评估为false


推荐阅读
author-avatar
小熊维尼-b晴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有