Firebase CollectionGroup调用报错is not a function 嵌套商品视频数据查询问题
问题排查及修复方案
错误原因
collectionGroup是Firestore实例的顶级方法,不支持嵌套在collection()、doc()方法链后调用,这是触发“CollectionGroup is not a function”报错的直接原因。- 你代码中
firestore.collection('products').doc()未传入具体文档ID,只会生成一个随机ID的空文档引用,完全不符合查询所有商品下评论视频的需求。
修复后代码
collectionGroup会自动匹配全局所有名为productReviewClips的子集合,正好满足你拉取所有商品下评论视频的需求,直接在Firestore实例上调用即可:
const [feed, setFeed] = useState([]); useEffect(() => { // 直接从Firestore实例调用collectionGroup const unsubscribe = firestore.collectionGroup('productReviewClips') .onSnapshot((snapshot) => { setFeed(snapshot.docs.map((doc) => { return { ...doc.data(), documentID: doc.id, }; })) }) // 组件卸载时取消监听,避免内存泄漏 return () => unsubscribe() }, [])
额外说明
如果你使用的是Firebase Web SDK v9+的模块化版本,需要先导入collectionGroup方法再调用,命名空间式的v8版本可直接使用上述代码。
内容的提问来源于stack exchange,提问作者Mars2024
相关产品推荐
相关产品推荐

