如何使用 firebase 按用户子目录中的数据排序列表
How do I order list by data from user's sub directory using firebase
我想根据用户在自己的子目录中的点数来显示列表中的用户。在我的应用程序中,我根据其自定义 uid 在数据库中创建一个用户,并创建一个目录,其中包含我要根据其对列表进行排序的点。它看起来是这样的:
users: {
uid1: {
name: something,
game: {
points: 10
}
},
uid2: {
name: something2,
game: {
points: 10
}
}
}
所以我首先收集所有 uid,然后使用快照创建 child 的路径,该路径具有决定用户是否参与游戏的值。评估后,我想按点对列表进行排序,但我找不到办法。想过使用 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
}
}
}
我想根据用户在自己的子目录中的点数来显示列表中的用户。在我的应用程序中,我根据其自定义 uid 在数据库中创建一个用户,并创建一个目录,其中包含我要根据其对列表进行排序的点。它看起来是这样的:
users: {
uid1: {
name: something,
game: {
points: 10
}
},
uid2: {
name: something2,
game: {
points: 10
}
}
}
所以我首先收集所有 uid,然后使用快照创建 child 的路径,该路径具有决定用户是否参与游戏的值。评估后,我想按点对列表进行排序,但我找不到办法。想过使用 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
}
}
}