Firebase排序反向排序 [英] firebase sort reverse order

查看:1421
本文介绍了Firebase排序反向排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  var playersRef = firebase.database()。ref team_mapping /); 

$ b playersRef.orderByChild(score)。limitToFirst(7).on(child_added,function(data){
}

使用这个查询,我可以按升序排序,但是我想按降序排序。这样做的方式。任何帮助将不胜感激。

在此先感谢!

解决方案

你可以限制到最后7个,因为查询是按升序排列,所以你只需要把最后7个数字倒过来。 / p>

  var playersRef = firebase.database()。ref(team_mapping /); 
var playersData = [];
var pageCursor;

playersRef.orderByChild(score)。limitToLast(7).on(child_added,function(data){
playersData = [data] + playersData;
}

更新



下面是一个如何分页的例子($ score)。

pre $ const query = firebase.database()。ref(team_mappings)。orderByChild('score') ;

var snapshots = [];

函数reversedChildren(快照){
var children = [];
snapshot.forEach(function(child){children.unshift(child);});
归还儿童;
}

函数addPlayerToLeaderBoard(快照){
var key = snapshot.key;
var place = snapshots.indexOf(snapshot)+ 1;
var score = snapshot.child('score')。val();
$('#leaderboard')。append(`< li> b< b> $ {key}:$ {score}< / li>


function parsePage(snapshot){
var children = reversedChildren(snapshot);
children.forEach(function(child){
players.push(child);
addPlayerToLeaderBoard(child);
});
pageCursor = children [children.length - 1];


函数reloadPlayers(){
players = [];
pageCursor = null;
query.limitToLast(5).once('value')。then(parsePage);


函数loadMorePlayers(){
query.endAt(pageCursor).limitToLast(5).once('value')。then(parsePage);
}

reloadPlayers(); $('#reload')。on('click',reloadPlayers);

$ $('#load_more')。on('click',loadMorePlayers);


var playersRef = firebase.database().ref("team_mapping/");


playersRef.orderByChild("score").limitToFirst(7).on("child_added", function(data) {
}

Using this query, I can sort it in ascending order. But, I wanted to sort in descending order. Can any body suggest me with some way to do this. Any help will be appreciated.

Thanks in Advance!!

解决方案

You can limit to the last 7 which will give you the highest scores since the query is in ascending order. Then all you have to do is reverse the last 7 you get for them to be in descending order.

var playersRef = firebase.database().ref("team_mapping/");
var playersData = [];
var pageCursor;

playersRef.orderByChild("score").limitToLast(7).on("child_added", function(data) {
    playersData = [data] + playersData;
}

UPDATE

Here is an example of how you could paginate by score.

const query = firebase.database().ref("team_mappings").orderByChild('score');

var snapshots = [];

function reversedChildren(snapshot) {
    var children = [];
    snapshot.forEach(function (child) { children.unshift(child); });
    return children;
}

function addPlayerToLeaderBoard(snapshot) {
    var key = snapshot.key;
    var place = snapshots.indexOf(snapshot) + 1;
    var score = snapshot.child('score').val();
    $('#leaderboard').append(`<li><b>${key}: ${score}</li>`);
}

function parsePage(snapshot) {
    var children = reversedChildren(snapshot);
    children.forEach(function (child) {
        players.push(child);
        addPlayerToLeaderBoard(child);
    });
    pageCursor = children[children.length - 1];
}

function reloadPlayers() {
    players = [];
    pageCursor = null;
    query.limitToLast(5).once('value').then(parsePage);
}

function loadMorePlayers() {
    query.endAt(pageCursor).limitToLast(5).once('value').then(parsePage);
}

reloadPlayers();

$('#reload').on('click', reloadPlayers);
$('#load_more').on('click', loadMorePlayers);

这篇关于Firebase排序反向排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆