javascript - 如何结合 Firestore orderBy desc 和 startAfter 游标

标签 javascript firebase google-cloud-firestore react-native-firebase

我正在尝试查询 firestore 中的列表,该列表应按降序日期属性排序,并使用 startAfter 游标对结果进行分页。

正如您在下面的代码片段中所看到的,一旦我将 orderBy('date', 'desc') 与 startAfter(lastDoc.date) 结合使用,这就会失败。

我想知道我做错了什么。有什么想法吗?

// this actually works
// but it is sorted by ascending dates
db.collection('tanks')
  .doc(tankId)
  .collection('documentations')
  .orderBy('date')
  .startAfter(lastDoc.date)
  .limit(pageSize)
  .get()
  
// this even works...
// but has no cursor (startAfter) set for pagination
db.collection('tanks')
  .doc(tankId)
  .collection('documentations')
  .orderBy('date', 'desc')
  .limit(pageSize)
  .get()
  
// this is what i need
// but it returns always zero results
db.collection('tanks')
  .doc(tankId)
  .collection('documentations')
  .orderBy('date', 'desc')
  .startAfter(lastDoc.date)
  .limit(pageSize)
  .get()

最佳答案

您需要将实际文档快照传递给 startAfter,而不是日期值:

db.collection('tanks')
  .doc(tankId)
  .collection('documentations')
  .orderBy('date', 'desc')
  .startAfter(lastDoc)
  .limit(pageSize)
  .get()

参见 reference documentation for startAfter() .

关于javascript - 如何结合 Firestore orderBy desc 和 startAfter 游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48097696/

相关文章:

javascript - 使用基于位置的 MouseEvent 触发输入 slider 的更改

javascript - 如何使用 Cloud Functions for Firebase 与 .onWrite 或 onchange 比较新旧值?

java - 从 Firebase 检索数据但 snaptshop.get 返回 null

firebase - Firestore 动态更新安全规则

android - 如何使用 kotlin 数据类获取 Firestore 文档的文档 ID

node.js - 我可以使用 nodejs admin sdk 对 firestore 安全规则进行单元测试吗?

javascript - 如何使用js在字符串(语句)之间添加/删除文本?

javascript - PHP 代码在 chrome 中返回空,在 firefox 中返回值,我该如何调查原因?

javascript - node_modules 不被识别为内部或外部命令

ios - 与 firebase 规则混淆(读写)