【问题标题】:Does firestore support skip functionality? [duplicate]firestore 是否支持跳过功能? [复制]
【发布时间】:2018-05-14 12:51:23
【问题描述】:

总结:我想使用MySql和MongoDb中使用的'skip'函数。 但是,'startAfter (number)' 不会跳过。

我现在正在做一个公告板。然后我有一个问题。

这是一个页面跳转的问题。

我使用将页面直接移动给用户的基本方法。

但是,我找不到 Mysql 或 MongoDB 过去使用的任何跳过函数。

这是我的代码的一部分。

return db.collection('boards').doc(title).collection('posts')
.orderBy('date').startAfter(2).limit(10).get()

所以我想从按日期排序的数据中跳过两个数据。

但是,'startAfter' 中的任何数字都将从第一个数据中获取。

当然,我在官方文档中查看了以下代码。

return first.get().then(function (documentSnapshots) {
  // Get the last visible document
  var lastVisible = documentSnapshots.docs[documentSnapshots.docs.length-1];
  console.log("last", lastVisible);

  // Construct a new query starting at this document,
  // get the next 25 cities.
  var next = db.collection("cities")
          .orderBy("population")
          .startAfter(lastVisible)
          .limit(25);
});

但是,上面的方法很麻烦,因为可以无条件地拥有已有数据。

没有什么好办法吗?我正在等待回复。

【问题讨论】:

  • 正如 Jason 回答的那样,无法跳过 Firestore 客户端 SDK 中的许多文档。但功能确实存在于 Admin SDK 中,它们旨在在受控环境中运行。见stackoverflow.com/questions/48884777/…。但我强烈建议您掌握 startAfter(及其兄弟姐妹)的窍门,因为它更适合 Firestore 的数据模型。
  • @Frank:我通常参考 Admin SDK。我以前用过offset,但忘记了。 :S 我已经更新了我的答案。谢谢。
  • 这是他们之间功能不匹配的奇怪案例。我喜欢 feature-parity 的原因之一是它减少了记忆 API 的内存需求。 :-)

标签: firebase nosql google-cloud-firestore


【解决方案1】:

客户端 SDK

这方面的文档说明:

fieldValuesOrDocumentSnapshot

(可重复任何类型或 DocumentSnapshot)

查询结果应在之后开始的文档快照或在之后开始此查询的字段值,按照查询的顺序排列。

因此,您无法简单地指定要跳过的文档数。您要么需要知道第二个文档的值(ID、字段值等),要么获取前两个文档,然后使用第二个文档的快照来生成查询。

管理 SDK

使用 Admin SDK,有 offset 方法,它应该可以让您实现您正在寻找的东西。

【讨论】:

  • 抱歉我的愚蠢问题,我检查了 Admin SDK,在我创建函数并更新使用“偏移”之后,真的感谢 Jason Berryman,
  • 可能对其他人有用,但您仍然会为跳过的每个文档抵消费用!
猜你喜欢
  • 2018-09-21
  • 2013-09-16
  • 2013-09-25
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 2019-06-10
  • 2021-10-09
  • 1970-01-01
相关资源
最近更新 更多