【问题标题】:firebase retrieve data using orderByChild() and equalTo()firebase 使用 orderByChild() 和 equalTo() 检索数据
【发布时间】:2018-03-27 05:13:00
【问题描述】:

firebase.database().ref('requests')
  .orderByChild('sender')
  .equalTo("viePatHR0qRaBPGvsb992LEM55F3")
  .on("child_added", (snapshot) => {
    console.log(snapshot.key);})

所以我试图在图片中的“requests”下找到关键节点:(例如:Mt8ElzJCDfSwDgdjjLuu38KUSw83e3iFEuoTtJXAkLgOyxoT0LIeQAg1) 我使用了这段代码,但我什么也没得到。什么问题?我应该使用什么?

【问题讨论】:

标签: javascript firebase firebase-realtime-database


【解决方案1】:

.orderByChild 查询仅适用于子级别。 (没有孙子)在您的情况下,这将是 Firebase 按键的级别,例如-KwqBYHP...

因此,如果您执行.orderByChild('sender'),它将不起作用,因为在此级别上没有名为sender 的属性。

因此,根据您的情况,您有两种选择。如果 viePatHR0qRaBPGvsb992LEM55F3 是唯一 id,您可以通过使用 set 而不是 push 将您的数据保存到数据库中来摆脱 firebase 按键。

如果viePatHR0qRaBPGvsb992LEM55F3 不是唯一ID,那么您需要修改您的引用。

修改后的引用如下所示firebase.database().ref('requests/viePatHR0qRaBPGvsb992LEM55F3').orderByChild('sender')

如果这不是您所期望的,您唯一的选择就是重建您的数据结构。通过创建例如一个名为的属性来摆脱深层嵌套:

id: "viePatHR0qRaBPGvsb992LEM55F3"

直接在您的对象上(与sender 属性所在的级别相同)。

【讨论】:

    猜你喜欢
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 2018-08-14
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多