【问题标题】:Firebase - limitToLast(5), then load previous dataFirebase - limitToLast(5),然后加载以前的数据
【发布时间】:2016-03-14 04:29:10
【问题描述】:

我有一个聊天程序。当应用程序加载时,我通过执行以下操作加载最后 5 条消息:

var chatRef = new Firebase("https://xxxx.firebaseio.com/chat/");
  $scope.query = chatRef.orderByChild("Datestamp").limitToLast(5);
  $scope.chatList = $firebaseArray($scope.query);

我想让用户选择加载更多以前的消息。但我不确定如何加载接下来的 5 条之前的消息。我正在尝试这样的事情但没有成功:

$firebaseArray(chatRef.orderByChild("Datestamp").endAt($scope.chatList[0].Datestamp).limitToFirst(5)).$loaded(function (data) {
  data.forEach(function (d) {
    $scope.chatList.push(d);
  });
});

所以基本上我的数据集是这样的:

消息 1

消息 2

消息 3

消息 4

消息 5

消息 6

消息 7

消息 8

消息 9

消息 10。

当我加载应用程序时,我说 limitToLast(5),它会拉动:

消息 6

消息 7

消息 8

消息 9

消息 10

现在我想加载之前的 2 条记录,

消息 4

消息 5

我怎样才能做到这一点?

【问题讨论】:

    标签: angularjs firebase


    【解决方案1】:

    您正在寻找endAt()。您需要传入您收到的第一条消息的值,因此在您的情况下是消息 6 的时间戳。

     chatRef.orderByChild("Datestamp").endAt(message6.Timestamp).limitToLast(3);
    

    您将在已显示的结果中收到消息 6。因此,您需要跳过结果中的最后一条消息。

    【讨论】:

    • 只是想补充一点,您的建议按预期工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多