Java Firebase-在实时数据库中对条目重新排序的最佳方法

Java Firebase-在实时数据库中对条目重新排序的最佳方法,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在尝试构建队列管理应用程序。我使用Firebasepush()将新条目添加到Firebase实时数据库中。插入顺序是我的默认设置 对于一个特定的场景,我想将一些元素向下推2到3步。 最好的方法是什么? 我需要使用firebase函数吗? 还是需要单独的服务器来处理此逻辑? 例如: 比如说,我有一组10个推送请求,它们来自不同的客户端应用程序,希望进入队列。 当客户没有到达时,我想把他们排在队列的5-7位 在没有服务器的情况下,是否有一种处理这些情况的好方法 我试图把逻辑放在客户端,但我想如果

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

对于一个特定的场景,我想将一些元素向下推2到3步。 最好的方法是什么? 我需要使用firebase函数吗? 还是需要单独的服务器来处理此逻辑?

例如: 比如说,我有一组10个推送请求,它们来自不同的客户端应用程序,希望进入队列。 当客户没有到达时,我想把他们排在队列的5-7位

在没有服务器的情况下,是否有一种处理这些情况的好方法

我试图把逻辑放在客户端,但我想如果客户端在使用手机时离线,这不会有多大帮助


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

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

Firebase-root
   |
   --- users
        |
        --- uid
             |
             --- name: "John"
             |
             --- age: 22
             |
             --- creationDate: 1534424049
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("users").orderByChild("creationDate");
要按创建日期对用户进行排序,应使用如下查询:

Firebase-root
   |
   --- users
        |
        --- uid
             |
             --- name: "John"
             |
             --- age: 22
             |
             --- creationDate: 1534424049
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("users").orderByChild("creationDate");

如果需要对数据库项目进行排序,请在项目中放置一个字段,以帮助您构建一个查询,以按所需顺序检索项目。您在控制台中看到的只是按子项的键排序。我想在某些情况下实际更改顺序。我可以用服务器轻松地完成这项工作,但有没有一种方法可以让我向下推用户,然后让列表中的其他人向上推等等。。就用Firebase谢谢。实际上,我有一个按键排序的默认列表,因为它无论如何都是基于时间戳的。默认列表需要在特定情况下重新排序,比如说客户想晚一点到达,然后把自己推到队列中。为此,我有一个名为QueueNum的孩子。如何根据特定条件(例如队列编号本身)对队列重新排序。如果我尝试在客户端应用程序端重新排序,可能会导致值不一致。不客气。让我们一次只回答一个问题。你认为我的回答对你最初的问题有帮助吗?因为这听起来是另一个问题,我不能在评论中回答,只能使用你在问题中提供的数据。为了遵循这个一致性的规则,请用AN发布一个新的问题,所以我和其他用户可以帮助你。如果你认为我对最初问题的回答对你有帮助,请考虑接受并投票表决。我会很感激的。谢谢向上投票。但它仍然不能完全回答我最初的问题