Firebase - limitToLast(5),然后加载之前的数据

Car*_*ten 5 angularjs firebase

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

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

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

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

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

消息 1

消息 2

消息 3

消息 4

消息 5

留言 6

消息 7

消息 8

消息 9

留言 10.

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

留言 6

消息 7

消息 8

消息 9

留言 10

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

消息 4

消息 5

我怎样才能做到这一点?

Fra*_*len 4

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

 chatRef.orderByChild("Datestamp").endAt(message6.Timestamp).limitToLast(3);
Run Code Online (Sandbox Code Playgroud)

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