Javascript 如何使用firebase按用户子目录中的数据对列表进行排序
我想根据用户在自己的子目录中的点显示列表中的用户。在我的应用程序中,我根据自定义uid在数据库中创建了一个用户,并创建了一个带有点的目录,我想根据这些点对列表进行排序。看起来是这样的:Javascript 如何使用firebase按用户子目录中的数据对列表进行排序,javascript,firebase,Javascript,Firebase,我想根据用户在自己的子目录中的点显示列表中的用户。在我的应用程序中,我根据自定义uid在数据库中创建了一个用户,并创建了一个带有点的目录,我想根据这些点对列表进行排序。看起来是这样的: users: { uid1: { name: something, game: { points: 10 } }, uid2: { name: something2, game: {
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
}
}
}
谢谢你,我想我可以用一些解决方案来解决这个问题,但这可以解决问题