Firebase orderByChild意外的结果
我有以下的单一儿童数据结构,并希望按子女财产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()); });
UPDATE
看来数据正在被对象键返回。 我怎样才能确保这是返回,按rating
sorting?
当您为查询请求value
事件时,Firebase会返回包含所有子级和其订单信息的快照。 但是,当您请求该快照的val()
时,这些孩子将转换为JOSN对象,并且订购信息将丢失。
解决scheme是使用快照导航子项,只有按照正确的顺序才能将其转换为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()); }); });