从 Firebase 数组内部调用特定数据

calling specific data from inside Firebase array

所以我的 firebase 文档如下所示:

所以这是一个列表,其中包含名称、imgUrl 等。我现在使用 firebase cloud firestore 的问题是,我只想提取所有“名称:”内容,以便我可以计算特定名称出现的次数。

我正在从文档中检索数据,如下所示:

 const matchLikes = async () => {
       await fire.firestore()
        .collection("eventLikes")
        .doc(eventID).onSnapshot((querySnapshot) => {
            
                //console.log("print indi event heree  " + querySnapshot.data().eventID)
              
                setLikes(querySnapshot.data().ActivityLikes)
              
            
        })

并且我在挂钩中使用了数组,但我只是不知道如何访问数组中的“名称:”内容我什至尝试过 querySnapshot.data().ActivityLikes.name 但它失败了。有谁知道我哪里出错了?

Firestore 不支持投影特定字段和聚合数据。您必须获取文档,然后手动查找每个名称的计数。另外,在 onSnapshot 之前不需要 await。尝试重构代码,如下所示:

const matchLikes = () => {
  fire.firestore()
    .collection("eventLikes")
    .doc(eventID).onSnapshot((docSnapshot) => {
      const nameCounts = docSnapshot.data().ActivityLikes.reduce((acc, cur) => {
        acc[cur.name] = (acc[cur.name] || 0) + 1;
        return acc;
      }, {});
    
      //  setLikes(querySnapshot.data().ActivityLikes)
    })
}