每个DataSnapshot的返回类型不匹配[关闭]

问题描述 投票:-1回答:1

我正在编写一个遍历特定分支子级的云函数。

显然,作为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  
  })
firebase firebase-realtime-database google-cloud-functions
1个回答
0
投票

您已经正确识别,错误告诉您DataSnapshot#forEach()的回调是同步的,不支持promise。

通过尝试使用DataSnapshot#forEach() / async语法,您的回调函数将返回await而不是简单的Promise<boolean>值。

似乎您试图基于子值来过滤结果,但是错误消息将您的代码遮盖了。请编辑您的问题以包含代码,以便我们查看您要实现的目标。

© www.soinside.com 2019 - 2024. All rights reserved.