Mat*_*ebb 1 javascript node.js firebase firebase-realtime-database
我有跟随单个子数据结构,并希望通过子属性检索订单列表rating
:
players: {
360368: {
name: "Joe, Blogs",
rating: 1853
},
400017: {
name: "Bob, Dylan",
rating: 2597,
},
430013: {
name: "James, Dean",
rating: 2152,
}
}
Run Code Online (Sandbox Code Playgroud)
let ref = this.fb.ref('players');
ref.orderByChild("rating").limitToFirst(100).once("value", function(snapshot) {
console.log(snapshot.val());
});
Run Code Online (Sandbox Code Playgroud)
返回的结果似乎没有逻辑数字顺序.
最后,当我运行以下查询时,我得到了我期望的结果(看到10个玩家的评分为2597):
let ref = this.fb.ref('players');
ref.orderByChild("rating").equal(2597).limitToFirst(10).once("value", function(snapshot) {
console.log(snapshot.val());
});
Run Code Online (Sandbox Code Playgroud)
看来数据是由对象键返回的.如何确保退货,订购rating
?
当您value
为查询请求事件时,Firebase会返回包含所有子项及其订单信息的快照.但是当您请求该val()
快照时,子项将转换为JOSN对象,并且订购信息将丢失.
解决方案是使用快照来导航子项,只有在按正确的顺序获得它们后才能转换为JSON:
let ref = this.fb.ref('players');
ref.orderByChild("rating").equal(2597).limitToFirst(10).once("value", function(snapshot) {
snapshot.forEach(function(childSnapshot) {
console.log(childSnapshot.val());
});
});
Run Code Online (Sandbox Code Playgroud)