【问题标题】:Firestore query returns no documents even though they are shown in the console in italicsFirestore 查询不返回任何文档,即使它们在控制台中以斜体显示
【发布时间】:2021-12-31 05:14:22
【问题描述】:

我正在尝试从(消息)表中获取所有文档 ID,但它返回未定义。但是,当我用我的另一张桌子(捐赠者)尝试它时,它正在工作。

我想知道,在消息表中,是不是因为文档引用了一个集合,而不是某些字段,这就是它变得未定义的原因?

无论如何,我的问题是,如何从我的消息表中获取所有文档 ID?我的消息方法返回未定义。

db.collection('messages')
  .get()
  .then((querySnapshot) => {
    querySnapshot.forEach((doc) => console.log(doc.data()));
  });

db.collection('donor')
  .get()
  .then((querySnapshot) => {
    querySnapshot.forEach((doc) => console.log(doc.data()));
  });

【问题讨论】:

    标签: reactjs firebase google-cloud-firestore


    【解决方案1】:

    您的 messages 集合中没有文档。您只有在文档 ID 下有 chats,这会导致 Firebase 控制台显示 messages 集合的文档 ID,以便您可以选择它们。客户端 SDK 无法获取这些文档 ID,因此最好在创建子集合之前在 messages 中创建一个空文档。

    要回填现有的、缺失的messages 文档,您可以在chats 上使用collection group query,遍历这些结果,然后使用document.ref.parent.parent.set({ dummy: true }) 之类的内容编写父文档。

    另见:

    【讨论】:

      【解决方案2】:

      您的消息集合根本不包含任何文档。它包含嵌套在文档 ID 下的子集合,这些子集合引用不存在的文档。您可以判断文档不存在,因为 ID 以斜体显示。

      不要求子集合必须嵌套在现有文档下。子集合完全独立于任何父文档而存在。

      对带有“缺失”文档的集合的查询不会产生任何这些文档。它们不存在,也无法通过 Web 和移动 SDK 查询。

      另见:

      【讨论】:

        猜你喜欢
        • 2018-06-16
        • 2021-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-11
        相关资源
        最近更新 更多