如何查询实时数据库以获取按特定键的时间排序的对象

时间:2018-06-13 11:28:47

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

您通常希望添加额外的数据结构以允许您想要的查找,例如将队列ID作为键的顶级列表,然后将它们的事件ID作为值。

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

现在你可以查看有人排队等候的事件。

另见: