[英]Flutter - Firebase Auth UID registers as Null in Firestore
[英]Flutter - Firebase Firestore document uid does not exists
我的数据库结构是这样的:
域 -> 用户 uid -> 用户数据
如果我尝试添加这样的数据:
await FirebaseFirestore.instance
.collection(path)
.doc(firebaseUser.uid)
.collection(collectionName)
.add({...});
其中 path 是用户域,数据库显示如下:
告诉我The document does not exists, it will not appear in queries or shapshots
。 但是,如果我像这样通过自动 ID 添加相同的数据:
await FirebaseFirestore.instance
.collection(path)
.add({...});
它就像图片中的第二个文档一样工作。 为什么会这样?
查看此集合中的文档如何在 Firestore 控制台中以斜体显示:这意味着这些文档仅作为一个或多个子集合的“容器”存在,但它们不是“真正的”文档。
事实上,通过做
await FirebaseFirestore.instance
.collection(path)
.doc(firebaseUser.uid)
.collection(collectionName)
.add({...});
您在collectionName
(子)集合中创建文档,但不在path
集合中。
另一方面,随着
await FirebaseFirestore.instance
.collection(path)
.add({...});
您确实在path
集合中创建了一个文档。
因此,如果您需要在path
集合和collectionName
(子)集合中有一个文档,您需要创建这两个文档,而不仅仅是“子”文档。
详细说明:
下面以col1
集合下的一个doc1
文档为例
col1/doc1/
和subCol1
(子)集合下的另一个subDoc1
col1/doc1/subCol1/subDoc1
实际上,从技术角度来看,它们之间根本没有关系。 他们只是共享路径的一部分,除此之外别无其他。
您可以很好地创建subDoc1
而无需创建doc1
。
这样做的副作用是,如果您删除文档,其子集合仍然存在。 同样,子集合文档并没有真正链接到父文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.