我想从Firestore获取一些文档。在我可调用的云函数中,我使用Promise.all而不是等待一个接一个地获取文档,而是一个接一个地等待文档,
const promises = []
upcomingEventIDs.forEach( upcomingEventIDs => {
const p = db.collection("events")
.where("eventID","==",upcomingEventIDs)
.where("isActive","==",true)
.where("hasBeenApproved","==",true)
.where("isCancelled","==",false)
.get()
promises.push(p)
})
const latestEventDataSnapshot = await Promise.all(promises)
然后我要循环我刚得到的文档快照,这就是问题所在
latestEventDataSnapshot.docs.forEach( doc => { // <-- error in this line
})
我有一个错误
TypeError:无法读取未定义的属性“ forEach”
这里有什么问题?我应该怎么做才能从Firestore获得刚刚得到的文档?
答案 0 :(得分:1)
get()
方法返回一个以QuerySnapshot
解析的Promise。
由于Promise.all()
“返回了一个可解决输入promise结果数组的单个Promise”,因此latestEventDataSnapshot
是一个QuerySnapshot
s数组,您需要对其进行循环,例如:
const latestEventDataSnapshot = await Promise.all(promises)
latestEventDataSnapshot.forEach(querySnapshot => {
querySnapshot.docs.forEach(queryDocumentSnapshot => {
console.log(queryDocumentSnapshot.data());
//...
})
})