java - Firebase - 在实时数据库中重新排序条目的最佳方式
问题描述
我正在尝试构建一个队列管理应用程序。我使用 Firebasepush()
将新条目添加到 Firebase 实时数据库中。插入顺序是我的默认设置。
对于特定场景 - 我想将一些元素向下推 2 或 3 步。最好的方法是什么? 我需要使用 firebase 功能吗?或者我需要一个单独的服务器来处理这个逻辑吗?
示例:假设我有一组 10 个来自不同客户端应用程序的推送请求,他们想要进入队列。当客户没有到达时,我想将他们推到队列中的 5-7 个位置。
有没有一种很好的方法可以在没有服务器的情况下处理这些场景
我试图将逻辑放在客户端,但我想如果客户端在使用手机时离线,这将无济于事。
另外,我没有将队列号设置为子元素,因为 firebase 正在处理插入顺序。如果有 2 个以上的客户端同时尝试进入队列,我猜想队列会产生冲突的条目。不确定这是否是正确的方法。
解决方案
不幸的是,您无法更改Firebase Console中节点的顺序。默认情况下,所有节点都按键排序。如果您需要按特定条件对数据库元素进行排序,只需在您的项目对象中添加另一个属性,该属性将帮助您构建一个查询,以您想要的顺序检索项目。假设您想按时间戳对商品进行排序,并且您有一个如下所示的数据库结构:
Firebase-root
|
--- users
|
--- uid
|
--- name: "John"
|
--- age: 22
|
--- creationDate: 1534424049
要按创建日期对用户进行排序,您应该使用如下所示的查询:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("users").orderByChild("creationDate");
推荐阅读
- web-scraping - 抓取没有表单数据的 ASPx 页面
- php - Why is my data being replicated three times when inserting data into database throught a php/html form?
- android - which user is exactly logged in so that we can fetch particular data
- amazon-web-services - Using SSM Secret Strings to create a Glue Connection fails in CDK
- php - laravel Fatal error: Unknown: Failed opening required ../root/htdocs/myapp/server.php' (include_path='.:') in Unknown on line 0
- react-native - React Navigation 4.x : Passing props to tabBarOnPress
- laravel - Laravel 7.x - How to remove 'public' from URL?
- python - How to write filepath on PyAutoGUI
- vue.js - Invalid prop for child component, despite using shallowMount
- java - Netbeans 空屏