如何遍历 Firestore(React 和 Firebase Web 应用程序)中的多个用户子集合?

Posted

技术标签:

【中文标题】如何遍历 Firestore(React 和 Firebase Web 应用程序)中的多个用户子集合?【英文标题】:How to loop through multiple sub-collections of users in Firestore (React & Firebase web application)? 【发布时间】:2021-07-16 14:47:27 【问题描述】:

我正在制作一个以 Firebase 作为后端的 React Web 应用程序。在 Web 应用程序中,健身教练可以记录他的客户进度。每周,培训师都会提交一份包含一些进度指标(体重、血压等)的表格。

在 Firestore 中,我收集了培训师的所有客户。每个客户文档中都有一个包含每周进度指标的集合,如下所示。

我想将每个客户端的所有进度指标设置为单个 useState,以便培训师可以将其导出到 csv 文档。我的计划是使用 useEffect 来执行此操作,我在其中循环遍历所有用户进度表,但我无法让它工作。下面是我目前的 useEffect。

它会抛出以下错误:

我怎样才能解决这个问题,以便所有进度表单都在一个 useState 中?

【问题讨论】:

请将相关代码和错误信息以文本形式包含在内,而不是以图像形式。 请不要发布您的代码截图或其他文本内容。而是发布实际文本,并使用 Stack Overflow 的格式化工具进行标记。 【参考方案1】:

对于此类问题,我始终建议准备好参考文档。

在这种情况下,您的snapshot 变量是QuerySnapshot object,每个doc 都是DocumentSnapshot object。如您所见,doc 确实没有 collection 方法,正如错误消息中所说的那样。

您正在寻找DocumentReference object,然后您可以从中获取subcollection。要从快照获取参考,请在其上调用ref

所以:

user.ref.collection("progress")...

【讨论】:

解决了问题,非常感谢!

以上是关于如何遍历 Firestore(React 和 Firebase Web 应用程序)中的多个用户子集合?的主要内容,如果未能解决你的问题,请参考以下文章

React Native Firebase:如何显示 Firestore 中的文本?

将 Apple Sign In 与 React Native Firebase 和 Firestore 一起使用时,如何检查用户是不是存在?

当聊天线程有未读消息时如何显示徽章React JS,Firestore

如何使用 react-redux-firebase 从 firestore 获取子集合

React - 显示 Firestore 时间戳

如何修复 React Native 中的 Firebase/firestore 错误?