Firebase数组按日期排序(时间戳) - Firebase

时间:2015-08-17 20:32:12

标签: angularjs firebase angularfire

我在Firebase服务器中有一系列歌曲。 每首歌都有lastCommentAt属性,这是时间戳。

我想按照距离当前时间最近的lastCommentAt时间检索歌曲顺序。

这是我的Firebase规则:

{
    "rules": {
        ".read": true,
        ".write": "auth != null",
        "songs": {
          ".indexOn": ["lastCommentAt"]
        }
    }
}

Songs feed example - CodePen

我无法使用 orderByChild()。它造成了奇怪的问题:

  • 不正确的订单

  • loadMore()在循环中加载相同的2首歌曲。这意味着无限 歌曲列表。

Songs feed with orderByChild() example - CodePen

1 个答案:

答案 0 :(得分:0)

我怀疑您的问题的根本原因是startAt()orderByChild()结合使用时对效果缺乏了解。有关详细信息,请阅读Firebase documentation on queries

如果使用orderByChild("lastCommentAt"),则startAt()函数会将应用于实例的ID,但会应用于每个实例的lastCommentAt属性。

因此,一旦您添加了orderByChild("lastCommentAt"),则startAt()需要将第一个参数作为您要获取的第一个lastCommentAt值,第二个参数是最后一个lastCommentAt 1}}你想得到的价值。