首页 > 解决方案 > WEBPACK_IMPORTED_MODULE_3 CollectionGroup 不是函数-firebase 集合组查询嵌套数据

问题描述

提示:有5个产品。每个产品有 5 条视频评论。这些评论嵌套在以下数据结构中。

产品 > 文档 > productReviewClips > 文档 {videoUrl: https://videoclip.mp4 , uid: 1234}。

每个 productReviewClips 文档都有一个 videoUrl。

我是否以错误的方式查询所有产品的 videoUrls?

const [feed, setFeed] = useState([]);

useEffect(() => { 
        firestore.collection('products').doc().collectionGroup('productReviewClips')
        .onSnapshot((snapshot) => {
            // console.log(JSON.stringify(snapshot) + "1")

            setFeed([...snapshot.docs.map((doc) => {
                return {
                    ...doc.data(),
                    documentID: doc.id,
                };
            })
        ])

        })
        },
   [])

标签: javascriptfirebasegoogle-cloud-firestorereact-hooks

解决方案


当您doc()不带参数调用时,它会生成一个新的唯一 ID。对于集合组查询,collection('products').doc()完全跳过初始并执行以下操作:

firestore.collectionGroup('productReviewClips')...

collectionGroup函数是对象的一部分,它在or对象Firestore上不可用,这也是您收到“不是函数”错误的原因。CollectionReferenceDocumentReference

如果您只想搜索productReviewClips特定路径下的集合,可以使用 Sam 在此处解释的技巧:CollectionGroupQuery but limit search to subcollections under a specific document


推荐阅读