繁体   English   中英

Flutter - Firebase Firestore 文档 uid 不存在

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM