【发布时间】: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