- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 firebase 模式,其中包含带有一些值的表“Catalog”
目录表
我使用 avgDrinkPrice 作为订单执行了 orderByChild(),但输出错误。
输出
代码
myRef.orderByChild("avgDrinkPrice").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
catalogList.clear();
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
Catalog catalog = postSnapshot.getValue(Catalog.class);
catalogList.add(catalog);
Log.d(TAG,"Drink price " + catalog.getAvgDrinkPrice());
catalogSize++;
}
//LOOP ENDS.
我尝试使用其他数值(例如纬度字段、经度和等级)进行排序,它们的顺序是正确的。 只有按avgDrinkPrice排序才会错。我不明白为什么。请帮忙。
最佳答案
根据您的屏幕截图,avgDrinkPrice
属性是一个字符串
,因此结果 排序正确。只是它们是按字典顺序排序的,而不是按数字排序的。
有更多关于 Firebase 在按 child 排序时如何排序数据的信息,here :
When using
orderByChild()
, data that contains the specified child key will be ordered as follows:
- Children with a
null
value for the specified child key come first.- Children with a value of
false
for the specified child key come next. If multiple children have a value offalse
, they are sorted lexicographically by key.- Children with a value of true for the specified child key come next. If multiple children have a value of
true
, they are sorted lexicographically by key.- Children with a numeric value come next, sorted in ascending order. If multiple children have the same numerical value for the specified > child node, they are sorted by key.
- Strings come after numbers, and are sorted lexicographically in ascending order. If multiple children have the same value for the specified child node, they are ordered lexicographically by key.
- Objects come last, and sorted lexicographically by key in ascending order.
要让子项按数字排序,您必须将 avgDrinkPrice
存储为数字。 lati
、longti
和 rating
也最好存储为数字。
使用 lati
、longti
和 rating
属性的排序可能看起来是数字,但那是因为字符串值是ordered 可能具有相同的位数 - avgDrinkPrice
不是这种情况。
关于android - firebase orderByChild 只为一个 child 返回奇怪的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41905834/
我正在尝试根据 documentation example 使用 Firebase orderByChild() 函数,但查询未返回过滤或排序。 这是示例数据结构: "notifications":
当子属性具有名称时,Firebase orderByChild() 效果很好,因此对于如下数据: groups groupStatus: "Active" 通过以下方式可以轻
我的 Firebase 架构如下所示, 我正在尝试获取general中的数据并按numberOfLikes属性对它们进行排序。根据我对 orderByChild 的理解,以下代码应该可以工作。 var
您好,我正在使用 ionic 和 firebase 构建一个应用程序,这是我的 firebase 模型: { "users" : { "D972XU" : { "8b91cc5
我正在尝试查询我的数据库以获取子编号> 7的所有日期 this.extra = function() { refer = ref.child(slot); refer.orderByC
我正在尝试使用 orderByChild 对快照进行排序,但这不起作用。 Firebase 规则: "rules": { "community": { "users": { "
我想在时间戳上使用 orderByChild。 但效果并不好。它们甚至按升序或降序排序。 这是结果: 第一:1581952308253 第二位:1581671445437 最后:15832546051
我正在尝试从“通知”子项获取通知计数。还有另一个 child 有一个随 secret 钥(我不知道),其中有一个 userKey 值。 我想使用 orderByChild("userKey") 并获取
这个问题在这里已经有了答案: Firebase query ordering not working properly (2 个答案) 关闭 4 年前。 我的示例数据 代码 let us
我有以下单子(monad)数据结构,想通过子属性 rating 检索订单列表: 示例数据结构 players: { 360368: { name: "Joe, Blogs",
我在使用 orderByChild().equalTo() 方法检索和删除 Firebase 数据库中节点的正确级别时遇到问题。 在网上搜索了好久,并没有真正解决我的问题。请帮忙。 我的数据库结构:
我目前正在使用 Firebase 编写 Android 应用程序。我有一个具有城市属性的产品模型。我正在运行以下查询: mDatabaseReference = FirebaseDatabase.ge
我正在使用 FirebaseRecyclerAdapter 来显示字符串列表。我的查询使用 orderByChild。结果首先用大写字母排序,如下所示: 项目 1、项目 2、项目 3、aItem、bI
我有两种方式对数据库表进行排序。 第一个是按日期(在我的情况下是创建),第二个是按得分。 所以我有一个下拉菜单,用户可以在其中指定他们想要排序的依据,并且我有一个调用正确数据库引用的函数。 goTo
使用 Firebase JS 库。尝试访问 firebase 查询结果中的值但没有成功: var ref = firebase.database().ref(`/listUser/${userId
当动态键位于实际引用和数据之间时,按子项(名称)排序不起作用。 这是我的代码: firebase.database().ref('/usersProfile').orderByChild('name'
我正在使用 FirebaseRecyclerAdapter 来显示字符串列表。我的查询使用 orderByChild。结果首先按大写字母排序,如下所示: 项目 1、项目 2、项目 3、aItem、bI
我尝试按子值“月”对数据库进行排序,但 orderByChild 不起作用。当我使用 onChildEventListener 而不是 addListenerForSingleValueEvent 时
我正在创建一个电话目录应用程序,我想在不同的 Activity 中显示不同的类别数据。我想帮助人们在不同类别中轻松找到他们的信息它向我显示了数据库中的所有数据。但我不想只显示“救护车联系人”类别数据。
我正在使用 FirebaseRecyclerAdapter。 我有许多带有子“maxValue”的节点。假设我有五个节点,列出的每个节点的最大值分别为 34、210、90、315、74。 我期望 .o
我是一名优秀的程序员,十分优秀!