javascript - 使用 forEach Firebase Cloud Functions 时出现未处理的错误 TypeError : snapshot. val 不是函数

标签 javascript node.js firebase google-cloud-functions

我正在编写一个带有 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/

相关文章:

ios - 如何使用嵌套数据创建结构

Android firestore RecyclerView 正在加载错误的图像

javascript - 我可以在 JavaScript 中创建一个正则表达式来验证特定的数学公式 - 字母和括号,其中不应嵌套括号

javascript - 错误: columnListA[i] is undefined

javascript - 检测浏览器是否在 Android 或 iOS 设备上运行

javascript - 从 JavaScript 中的命名管道读取

javascript - "SyntaxError: missing ) after argument list in views\contact-form.ejs while compiling ejs"错误可能是什么原因导致的?

node.js - 在 Windows 上运行 lerna bootstrap -- hoist 命令时出现操作不允许错误 npm

Firebase 规则 : Allow only Specific URL?

javascript - 从 OneDrive JS API 检索整个文件树