【问题标题】:Flutter: Identify if there are documents in a firebase collectionFlutter:识别firebase集合中是否有文档
【发布时间】:2021-04-05 23:07:36
【问题描述】:

我想将数据发布到一系列集合和文档中,

CollectionReference data = FirebaseFirestore.instance
        .collection('Data')
        .doc(user)
        .collection('First')
        .doc(category)
        .collection(time);
data.add({'element': 'field'});

但是当我尝试这样做时,动态名称的名称以斜体显示,如果它只是字体样式的变体,那不会有问题,问题是当我尝试知道是否有集合中的数据First 它告诉我什么都没有

Widget build(BuildContext context) {
    return StreamBuilder(
      stream: FirebaseFirestore.instance
          .collection('Data')
          .doc(user)
          .collection('First')
          .snapshots(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.hasData) {
          print(snapshot.data);
          return Icon(Icons.check);
        }
        return Icon(Icons.error);
      },
    );
  }

颤动:空

必须按第一、第二、第三等来分隔,并且每个必须有单独的不同类别,并且每个类别中必须有时间

Firebase 看起来像这样

数据 -> S6W4kb1dKycD060v47FFs0i528Q2 -> 首先 -> 发布 -> 19:00

只有当我直接从 Firebase 控制台添加项目时,它才会识别项目存在

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    在您的通话片段中...

    CollectionReference data = FirebaseFirestore.instance
            .collection('Data')
            .doc(user)
            .collection('First')
            .doc(category)
            .collection(time);
    

    ...NONE.collection().doc() 创建 anything - 它们只是扩展底层引用的 refPath,即 Data/{user}/First/{category}/time 是集合你会添加到。当您FINALLY 执行data.add({'element': 'field'}) 时,将添加一个SINGLE 文档,其中包含{'element': 'field'} 的内容(和未指定的ID)。

    请记住,在 Firestore 中,“集合”不是物理身份;它们是文档结构化路径的一个方便部分。例如,在

    TopLevel/document1/NextLevel/document2/NextNextLevel/document3/NextNextNextLevel/actualDocument
    

    NONE OF TopLevel、document1、NextLevel、document2、NextNextLevel、document3 或 NextNextNextLevel 需要存在 - 这就是它们在控制台中以斜体显示的原因。

    【讨论】:

    • 谢谢,如果我需要同一棵树或至少一棵类似的树,我该怎么办?我怎样才能让它们存在?
    • 如果您希望这些文档存在,您需要将数据分别写入每个文档。所以FirebaseFirestore.instance .collection('Data') .doc(user).set(...)FirebaseFirestore.instance .collection('Data') .doc(user) .collection('First') .doc(category).set(...)
    • 更重要的问题:你真的需要它们存在吗?一个文档的结构化路径仍然存在,您创建的任何其他文档也是如此;索引仍将被创建;您的文件仍将被组织。 “树上”的文档和集合的存在或不存在对性能没有任何影响。
    猜你喜欢
    • 2020-08-28
    • 1970-01-01
    • 2021-01-06
    • 2020-12-19
    • 2020-03-19
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多