获取包含超过 2000 个文档的分区的 PartitionedList

Get PartitionedList for partition with more than 2000 documents

我有一个分区的 Cloudant 数据库(在免费层),其中一个分区包含 2000 多个文档。不幸的是,运行 await db.partitionedList('partitionID') returns 这个对象:

{
  total_rows: 2082,
  offset: 0,
  rows: [...]
}

其中行是仅包含 2000 个对象的数组。有没有办法让我得到剩下的 82 行,或者得到所有 2082 行的列表。谢谢

Cloudant limits the _partition endpoints to returning a maximum of 2000 rows 所以你不能一次获取所有 2082 行。

获取剩余行的方法是存储最后一行的文档 ID,并使用它为第二个请求创建 startkey,附加 [=13=] 以请求列表开始来自索引中的下一个文档 ID,例如

db.partitionedList('partitionID', {
  startkey: `${firstResponse.rows[1999].id}[=10=]`
})

请注意,partitionedList 等同于 /{db}/_partition/{partitionID}/_all_docs,因此 keyid 在每一行中都是相同的,您可以放心地假设它们是唯一的(因为它是文档 ID)允许使用 unicode [=13=] trick. However, if you wanted to do the same with a _view you'd need to store both the key and id and fetch the 2000th row twice.