首页 > 解决方案 > 如何查询实时数据库以获取按时间排序的特定键的对象

问题描述

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

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

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

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

标签: node.jsfirebasefirebase-realtime-database

解决方案


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

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

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

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

另见:


推荐阅读