Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase数据库中的降序排序_Firebase_Firebase Realtime Database - Fatal编程技术网

Firebase数据库中的降序排序

Firebase数据库中的降序排序,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,Firebase实时数据库中有以下书籍列表: [ { title: "Don't Make Me Think", upvotes: 110 }, { title: "The Mythical Man Month", upvotes: 111 }, { title: "Code Complete 2", upvotes: 112 } ] 默认情况下,以下查询按ASC顺序返回此列表: firebase.database().r

Firebase实时数据库中有以下书籍列表:

[
  {
    title: "Don't Make Me Think",
    upvotes: 110
  },
  {
    title: "The Mythical Man Month",
    upvotes: 111
  },
  {
    title: "Code Complete 2",
    upvotes: 112
  }
]
默认情况下,以下查询按ASC顺序返回此列表:

firebase.database().ref('books').orderByChild('upvotes')

如何改为按
upvots
DESC查询和排序?

不幸的是,firebase不允许按降序返回。我通常只是颠倒了客户端返回结果的顺序

如果您的数据查询太大,无法对客户端进行排序,您可以这样做

firebase.database().ref('books').orderByChild('ups').limitToLast(2)

然后从那里反转结果。可以查看文档

如果我是正确的,则上面链接中建议的解决方案建议我将
upvote
属性存储为负数。然后,在渲染时,应再次将其转换为正整数。如果是这样的话,这似乎有点骇人听闻,因为我数据库中的数据并没有真正反映出这些书的价值。我理解这种担忧。然而,它是一个数字——不管是正的还是负的,你都知道它代表什么。或者,您可以将数字的负数版本存储在另一个子节点中,用于排序。您也可以总是在代码中排序。使用Collections.reverse(数组);在结果上,一旦从firebase获得响应,就可以使用Array.unshift(obj)将所有对象反移位到局部变量。这将使您的对象颠倒顺序。例如:-
var yourVariableName=[];firebase.database().ref('books').orderByChild('upvotes').on('child_added',(snapshopt)=>{yourVariableName.unshift(snapshopt.val());})