我正在编写一个带有 HTTPS
触发器的 Firebase 云函数,并且我使用 Promise.all(arrayOfPromises)
一次启动多个读取操作,当所有 promise 都得到满足时,then(snapshotContainsArrayOfSnapshots)
方法被触发,我尝试使用 forEach(snapshot)
方法迭代 snapshotContainsArrayOfSnapshots
,但我收到此错误:
Unhandled error TypeError: snapshot.val is not a function
代码如下:
let promisesArray = []
for(let i = 0; i < 10; i++){
const promise = db.ref(`/questions/en/${i}`)
promisesArray.push(promise)
}
return Promise.all(promisesArray)
.then((snapshotContainsArrayOfSnapshots) => {
let data = []
snapshotContainsArrayOfSnapshots.forEach((snapshot) => {
data.push(snapshot.val())
})
return JSON.stringify(data)
})
请记住:这不是 onWrite
触发器,因此我不需要调用 change.after
。
最佳答案
您要添加到 promisesArray
的是 References
,请参阅文档 here
对于每个引用,您应该使用 once()
方法(doc here)查询引用处的数据,并且您需要添加此方法返回的 promise 到你的promisesArray
。
因此请执行以下操作:
let promisesArray = []
for(let i = 0; i < 10; i++){
const promise = db.ref(`/questions/en/${i}`).once('value');
promisesArray.push(promise)
}
return Promise.all(promisesArray)
.then((snapshotContainsArrayOfSnapshots) => {
let data = []
snapshotContainsArrayOfSnapshots.forEach((snapshot) => {
data.push(snapshot.val())
})
return JSON.stringify(data)
})
关于javascript - 使用 forEach Firebase Cloud Functions 时出现未处理的错误 TypeError : snapshot. val 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50951800/