我想根据列表中各自的子目录显示用户。在我的应用程序中,我根据其自定义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>";
}
});
})
答案 0 :(得分:0)
您只能通过直接子属性订购商品,而不能通过较低级别的后代订购商品。因此,您必须确保您要订购的价值在用户级别可用:
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
}
}
}