Firebase 3 orderByChild 不适用于 ionic2

Firebase 3 orderByChild not working with ionic2

我正在尝试从我的 firebase 数据库中检索数据,但我无法按子值对数据进行排序。

data.db.orderByChild('likes').on('value', data => {
            this.posts = data.val();
            this.posts = Object.keys(this.posts).map(key => this.posts[key])
            console.log(this.posts);
        });

这是我的数据服务

this.db = firebase.database().ref('/posts');

这是我的数据库结构

{
   "posts": {
      "1473631200000": {
         "date": "12.02.2016",
         "imageUrl": "http..."
         "userId": "id",
         "likes": 20
      }
      "1473804000000": {
         "date": "12.08.2016",
         "imageUrl": "http..."
         "userId": "id",
         "likes": 284
      }
   }
}

我可以检索数据,但我无法按喜欢的值对它们进行排序。我只想让置顶帖更靠前。

如果您对 Firebase 数据库执行查询,它 returns 一个 DataSnapshot。该快照包含子项的键、值 和顺序

当您从快照中检索 val() 时,它会将其转换为键和值的字典。在这种情况下它失去了顺序。

为了保持顺序,使用 forEach 遍历 DataSnapshot,然后才得到值:

data.db.orderByChild('likes').on('value', data => {
    this.keys = [];
    this.posts = [];
    data.forEach(child => {
        this.keys.push(child.key);
        this.posts.push(child.val());
    });
    console.log(this.posts);
});