2017-02-15 42 views

回答

1

值是否大于另一值是由排序方法定义的。该火力地堡所使用的方法是explained in the documentation

当使用orderByChild(),数据包含指定的子键如下命令:

  1. 儿童与指定的子键null价值是第一位的。
  2. 接下来是指定子键的值为false的儿童。如果多个孩子的值为false,则按按键按字典顺序排序。
  3. 指定子键的值为true的孩子接下来。如果多个孩子的值为true,则它们按键按字典顺序排序。
  4. 带数值的孩子接下来按升序排序。如果多个子项对于指定的子节点具有相同的数值,则按键排序。
  5. 字符串在数字之后,按照字典顺序按升序排列。如果多个子项对于指定的子节点具有相同的值,则它们按键按字典顺序排序。
  6. 对象最后以按照按升序排列的按字典排序。

至于象火力地堡的排序而言,truefalse更大。

+0

哦,就是这样。所以如果我想过滤所有有foo子节点的节点,我会做reference.orderByChild(“foo”)。startAt(false)。没有更可读的方式来做到这一点? – cuddlecheek

+1

这就是它的工作方式,因为Firebase查询是基于范围的。如果你在'foo'中存储的值有一些限制,你可以得到更可读的东西。例如,如果你正在存储正整数,'startAt(0)'将更具可读性。如果你正在存储字符串'startAt(“”)'可能工作(我没有尝试过)。这取决于数据。 – cartant