从 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)
})
}
所以我的 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)
})
}