Javascript 如何使用firebase按用户子目录中的数据对列表进行排序

Javascript 如何使用firebase按用户子目录中的数据对列表进行排序,javascript,firebase,Javascript,Firebase,我想根据用户在自己的子目录中的点显示列表中的用户。在我的应用程序中,我根据自定义uid在数据库中创建了一个用户,并创建了一个带有点的目录,我想根据这些点对列表进行排序。看起来是这样的: users: { uid1: { name: something, game: { points: 10 } }, uid2: { name: something2, game: {

我想根据用户在自己的子目录中的点显示列表中的用户。在我的应用程序中,我根据自定义uid在数据库中创建了一个用户,并创建了一个带有点的目录,我想根据这些点对列表进行排序。看起来是这样的:

users: {
    uid1: {
        name: something,
        game: {
            points: 10
        }
    },
    uid2: {
        name: something2,
        game: {
            points: 10
        }
    }
}
首先,我收集所有UID,然后使用快照创建指向子对象的路径,该路径的值决定用户是否参与游戏。一旦它被评估,我想按点排序列表,但我找不到一种方法来做。考虑过使用FirebaseUsers.orderByChild'game/points',但这不是一个有效的参数

FirebaseUsers.on('value', function(snapshot) {      
    snapshot.forEach(function(childSnapshot) {
        var playerStatus = childSnapshot.child("game/player"),
            playerPoints = childSnapshot.child("game");         
        if(playerStatus.val() == true) {                
            allFirstNames += "<p>" + childSnapshot.val().firstname + "</p>";
            allLastNames += "<p>" + childSnapshot.val().lastname + "</p>";
            allPoints += "<p>" + playerPoints.val().points + "</p>";                                
        }
    });     
})

只能按直接子属性排序项目,而不能按较低级别的子体排序。因此,您必须确保要订购的值在用户级别可用:

users: {
    uid1: {
        name: something,
        points: 10,
        game: {
        }
    },
    uid2: {
        name: something2,
        points: 10,
        game: {
        }
    }
}
如果你碰巧有多个游戏在那里,你很可能会希望秩序的最高分数的球员。在这种情况下,将玩家的最高分数提升到用户级别:

users: {
    uid1: {
        name: something,
        max_points: 10,
        game: {
            points: 10
        }
    },
    uid2: {
        name: something2,
        max_points: 10,
        game: {
            points: 10
        }
    }
}

谢谢你,我想我可以用一些解决方案来解决这个问题,但这可以解决问题