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()); }); });
- 当某个键是特定值时运行firebase云端function
- 从Firebase Function / Express / Node.js获取原始POST数据
- 用于Firebase Admin SDK的Node.js身份validation服务器 – JWTvalidation问题
- Firebase .orderByChild()。equalTo()。once()。then()当孩子不存在时承诺
- Firebase HTTP云端函数.send()返回什么?
- “使用Node.JS的Firebase云function”中的“functions.config()不可用”
- 如何在NodeJS中创build一个新的Firebase Admin SDK服务器以与LinkedIn进行身份validation?
- 在使用Promise.all()forEach呈现NodeJS页面之前,先加载Firebase数据,
- 通过两个Firebase项目发送推送通知