【问题标题】:WEBPACK_IMPORTED_MODULE_3 CollectionGroup is not a function - firebase collection group querying nested dataWEBPACK_IMPORTED_MODULE_3 CollectionGroup 不是函数-firebase 集合组查询嵌套数据
【发布时间】:2021-12-20 21:27:55
【问题描述】:

提示: 有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,
                };
            })
        ])

        })
        },
   [])

【问题讨论】:

  • 不需要setFeed([...snapshot.docs.map((doc) => { /* ... */ })]);,因为map() 已经生成了一个新数组,只需使用setFeed(snapshot.docs.map((doc) => { /* ... */ })); 代替。否则,你实际上是在做setFeed(snapshot.docs.map((doc) => { /* ... */ }).map(docData => docData));

标签: javascript firebase google-cloud-firestore react-hooks


【解决方案1】:

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

firestore.collectionGroup('productReviewClips')...

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

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

【讨论】:

  • 谢谢你们。我现在明白了——Group 不是 Col 或 Doc 的一部分。真的很感激,并不是所有的英雄都穿着物理披风,并将其存档以备将来参考。
猜你喜欢
  • 1970-01-01
  • 2018-05-23
  • 1970-01-01
  • 2021-11-25
  • 2021-09-05
  • 2019-03-27
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多