gpt4 book ai didi

javascript - Firebase 范围查询

转载 作者:行者123 更新时间:2023-11-30 11:46:47 25 4
gpt4 key购买 nike

我正在使用 AngularFire+Firebase 并且在 firebase-database 中有数据。

我正在尝试使用 Smart Table 对数据进行分页

我的问题是我不知道如何在不指定任何子项的情况下进行范围查询,即从记录 # 25 到 35 中获取记录

下面的查询给了我前 5 条记录

var queryFIrst = visitRef.startAt().limitToFirst(5);
$scope.Visits = $firebaseArray(queryFIrst);

现在我正在尝试获取下 5 条记录,从 6 条到 10 条,我在下面尝试过

var queryFIrst = visitRef.startAt().limitToFirst(5).endAt().limitToFirst(5);
$scope.Visits = $firebaseArray(queryFIrst);

但它给出了 startAtendAt 不能像这样与 limit 一起使用的错误

最佳答案

一般来说,分页不太适合 Firebase 的实时数据模型/API。您正在尝试为 SQL SKIP 运算符建模,它不适用于 Firebase 数据库。

但是如果你想在 Firebase 中模拟分页,你应该考虑有一个“ anchor ”。

当您加载第一页后,该页面上的最后一项将成为 anchor 。当您想要加载下一页时,您可以创建一个从 anchor 开始的查询并加载 n+1 项。

在伪代码中(它是真正的 JavaScript,我只是没有运行它):

var page1 = visitRef.orderByKey().limitToFirst(5);
var anchorKey;
page1.on('child_added', function(snapshot) {
anchorKey = snapshot.key; // this will always be the last child_added we received
});

现在,当您想要加载下一页项目时,您可以创建一个从 anchor 键开始的新查询:

var page2 = visitRef.orderByKey().startAt(anchorKey).limitToFirst(6);

这里有几点需要注意:

  • 您似乎正在使用 Firebase 1.x SDK 中的一种方法,例如空的 startAt()。虽然该代码可能仍然有效,但我的代码片段使用了 3.x SDK 的语法/习惯用法。
  • 对于第二个页面,您需要加载一个额外的项目,因为两个页面都加载了 anchor 项目。
  • 如果您希望能够向后分页,您还需要在页面开头使用 anchor 键。

关于javascript - Firebase 范围查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40721803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com