首页 > 解决方案 > Firebase - 在实时数据库中重新排序条目的最佳方式

问题描述

我正在尝试构建一个队列管理应用程序。我使用 Firebasepush()将新条目添加到 Firebase 实时数据库中。插入顺序是我的默认设置。

对于特定场景 - 我想将一些元素向下推 2 或 3 步。最好的方法是什么? 我需要使用 firebase 功能吗?或者我需要一个单独的服务器来处理这个逻辑吗?

示例:假设我有一组 10 个来自不同客户端应用程序的推送请求,他们想要进入队列。当客户没有到达时,我想将他们推到队列中的 5-7 个位置。

有没有一种很好的方法可以在没有服务器的情况下处理这些场景

我试图将逻辑放在客户端,但我想如果客户端在使用手机时离线,这将无济于事。

另外,我没有将队列号设置为子元素,因为 firebase 正在处理插入顺序。如果有 2 个以上的客户端同时尝试进入队列,我猜想队列会产生冲突的条目。不确定这是否是正确的方法。

标签: javaandroidfirebasefirebase-realtime-database

解决方案


不幸的是,您无法更改Firebase Console中节点的顺序。默认情况下,所有节点都按键排序。如果您需要按特定条件对数据库元素进行排序,只需在您的项目对象中添加另一个属性,该属性将帮助您构建一个查询,以您想要的顺序检索项目。假设您想按时间戳对商品进行排序,并且您有一个如下所示的数据库结构:

Firebase-root
   |
   --- users
        |
        --- uid
             |
             --- name: "John"
             |
             --- age: 22
             |
             --- creationDate: 1534424049

要按创建日期对用户进行排序,您应该使用如下所示的查询:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("users").orderByChild("creationDate");

推荐阅读