离子反应做 firebase 查询

ionic react doing firebase query

我正在使用离子反应并卡在查询数据上。我知道如何使用如下代码更新特定数据:

const dbref = firebase.database().ref('/') 
await dbref.child("/withdrawQueue").push({"date": (new Date()).getTime(), "uid": uid, "coins": diviCoins, "status": "pending"})

因为它是一个参考所以不能进行数据查询或者至少我不知道如何查询。我做了类似

的事情
dbref.child("withdrawQueue").orderByChild("uid").equalTo(uid).once('value', resp=> {
          console.log("user withdraw request is", resp)
}

但这并没有得到响应 => 我不知道为什么。

很难确定这里发生了什么,但我会给你一些指示来找到问题的根源。

根据firebase设置数据

根据 firebase/database 文档(版本 8,看起来您正在使用),这是更新数据的方法:

const childRef = ref.child('users');
const elemRef = childRef.push(uid);
elemRef.set({
    "date": (new Date()).getTime(),
    "coins": diviCoins,
    "status": "pending"
},(err) => {
    console.log(err) // make sure your set isn't erroring.
})

Push 还接受一个错误处理程序,这是一个很好的诊断。 Push 也接受这个错误函数。如果你真的需要设置 UID,你可能必须使用 push。我只是倾向于使用他们给定的 UID。

您还可以从 firebase 控制台检查数据库的内容,以查看是否正在写入数据。

如果数据库中存在数据

如果身份验证设置不正确,这也可能是调用错误。如果您使用的是 Admin API,则需要一个服务帐户,并将服务帐户凭据传递给应用程序以获取访问权限。否则,首先确保身份验证有效,然后检查数据库规则以确保用户有权访问该数据。如果您处于测试模式,那可能不是问题,但您也需要检查一下。

假设身份验证已设置

传递错误函数将有助于诊断错误,也可以尝试不使用 ordering/filtering。我的猜测是此调用未成功,错误可能会帮助您确定原因。

dbref.child("withdrawQueue").once('value', resp => {
    console.log("user withdraw request is", resp)
},(err)=>{
   console.log(err)
})

勾选dev-tools/console

浏览器的开发工具控制台通常会为您提供有关正在发生的事情的更多信息。检查那里是否有其他错误。