【问题标题】:How to query Realtime Database to get objects ordered by time for a specific key如何查询实时数据库以获取按时间排序的特定键的对象
【发布时间】:2018-06-13 11:28:46
【问题描述】:

我有一个事件节点,其中每个事件都有一个队列,其中包含具有特定键的对象。我正在尝试使用我的服务器来获取队列包含按时间排序的特定键的所有事件的键。这是我的数据结构:

{
    "events" : {
        "6Pl5x3KrDgOPxwEQq5yD" : {
            "queue" : {
                "aIcQtBOGP4eAgZvxh0emaHGCMNf1" : {
                    // Details
                },
                // More queuers
             }
        },
        "08Gnr1pbCQETXeRyRG349" : {
            "queue" : {
                "8Gnr1pbCQETXeRyRG349" : {
                    // Details
                },
                // More queuers
             }
        }
    }
}

因此,如果我在上面的数据中搜索队列中包含键 aIcQtBOGP4eAgZvxh0emaHGCMNf1 的所有事件,我会检索回 6Pl5x3KrDgOPxwEQq5yD

如何使用 Node.js 做到这一点?

【问题讨论】:

  • 您好,“6Pl5x3KrDgOPxwEQq5yD”是这个事件 ID 吗?还是自动生成的?
  • @MuruGan 是的,它是事件的 ID。它是在我创建新事件时自动生成的。
  • 据我了解,您有活动列表,并且您有活动参与者的队列。类似的东西?
  • @MuruGan 是的,这是正确的,所以我试图查看一个人在队列中的所有事件
  • 你能做的最好的事情就是从事件中拉出队列,因为当你只想要事件时,你仍然会得到队列列表,所以它正在下载多余的数据。

标签: node.js firebase firebase-realtime-database


【解决方案1】:

Firebase 数据库可以对位于您运行查询的位置的每个子节点下的已知路径上的属性进行排序/过滤。您正在尝试过滤动态路径,这是不可能的。

您通常需要添加一个额外的数据结构以允许您进行所需的查找,例如以队列 ID 作为键,然后以事件 ID 作为值的顶级列表。

"events": {
    ...
},
"queues": {
    "aIcQtBOGP4eAgZvxh0emaHGCMNf1": "6Pl5x3KrDgOPxwEQq5yD",
    "8Gnr1pbCQETXeRyRG349": "08Gnr1pbCQETXeRyRG349"
}

现在您可以查找有人排队等待的任何事件。

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    相关资源
    最近更新 更多