gpt4 book ai didi

javascript - Firebase orderByChild 意外结果

转载 作者:行者123 更新时间:2023-11-30 07:56:33 24 4
gpt4 key购买 nike

我有以下单子(monad)数据结构,想通过子属性 rating 检索订单列表:

示例数据结构

players: {
360368: {
name: "Joe, Blogs",
rating: 1853
},
400017: {
name: "Bob, Dylan",
rating: 2597,
},
430013: {
name: "James, Dean",
rating: 2152,
}
}

检索码

let ref = this.fb.ref('players');

ref.orderByChild("rating").limitToFirst(100).once("value", function(snapshot) {
console.log(snapshot.val());
});

返回的结果似乎没有逻辑数字顺序。

最后,当我运行以下查询时,我得到了预期的结果(看到 10 个评分为 2597 的玩家):

let ref = this.fb.ref('players');

ref.orderByChild("rating").equal(2597).limitToFirst(10).once("value", function(snapshot) {
console.log(snapshot.val());
});

更新

数据似乎是由对象键返回的。我怎样才能确保返回,按 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());
});
});

关于javascript - Firebase orderByChild 意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38345510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com