javascript Firebase v9,无法从嵌套集合中获取文档

icomxhvb  于 2023-06-04  发布在  Java
关注(0)|答案(3)|浏览(192)

我觉得在v8中获得子集合更容易,我花了2天的时间尝试新的方法,但我放弃了。
我正在构建一个简单的社交媒体应用程序,用于学习目的。每个用户登录并能够发布一些文本(和图像,但不是atm),我有一个主要的用户集合,它有用户ID。每个用户都有一个名为Posts的集合,它包含所有用户的帖子。

我可以这样做,输入每个用户的UID

那么我该怎么做才能访问Users集合,然后获取所有用户并能够访问Posts子集合呢?
附言:很抱歉,如果这个问题的任何部分是不清楚的,英语不是我的第一语言,这是我第一次在这里发帖。感谢任何帮助!.

pobjuy32

pobjuy321#

如果你想从所有用户那里获取文章,你需要寻找collectionGroup查询,使用它你可以从所有名为'posts'的子集合中获取文档。您可以使用Modular SDK(V9)运行collectionGroup查询,如下所示:

import { getFirestore, getDocs, collectionGroup } from "firebase/firestore"
const db = getFirestore()

const allPosts = await getDocs(collectionGroup(db, "posts"))
5kgi1eie

5kgi1eie2#

我有一个像this这样的结构
“posts”是一个集合,它包含不同的“userIDs”文档,“userIDs”包含一个称为“photos”的集合,该集合包含不同的文档,这些文档包含关于用户创建的帖子的信息
为了访问用户的所有帖子,我使用了

const docRef = doc(db, 'posts', auth.currentUser.uid)
 const docSnap = await getDocs(collection(docRef, "photos"))
 docSnap.forEach((doc) => {
    // doc.data() is never undefined for query doc snapshots
    console.log(doc.id, ' => ', doc.data())
 })
beq87vna

beq87vna3#

const docRef = doc(db, "Users", currentUser.uid);
const docSnap = await getDocs(collection(docRef, "Posts");)

相关问题