我正在编写一个遍历特定分支子级的云函数。
显然,作为forEach函数参数的函数的返回类型是布尔值,但是我需要将该函数设为异步函数才能正确处理所有的Promise,因此返回类型最终是一个布尔值的承诺,而不是布尔值。
我该如何解决?
提前感谢。
我的代码:
await change.after.forEach(async (childSnap) => {
let amt = 0
await change.after.ref.root.child(`CPUB/${childSnap.key}/${context.params.gayid}`+ ' a')
.once('value', (data) =>{amt = data.val()})
await change.after.ref.root.child(`Users/${childSnap.key}/wealth`)
.once('value', async (data) => {
await change.after.ref.root.child(`Users/${childSnap.key}/wealth`)
.set(Number(data.val()) + Number(amt/apot*(apot+bpot)))
})
return false
})
您已经正确识别,错误告诉您DataSnapshot#forEach()
的回调是同步的,不支持promise。
通过尝试使用DataSnapshot#forEach()
/ async
语法,您的回调函数将返回await
而不是简单的Promise<boolean>
值。
似乎您试图基于子值来过滤结果,但是错误消息将您的代码遮盖了。请编辑您的问题以包含代码,以便我们查看您要实现的目标。