如何对 Fauna DB 中的排序索引进行分页?

How do I paginate a sorted index in Fauna DB?

我创建了一个索引来按日期对博客文章进行排序。但是,当我尝试对结果进行分页时,它一直返回初始结果。

这是我的索引:

CreateIndex({
  name: "posts_desc",
  unique: false,
  serialized: true,
  source: Collection("posts"),
  terms: [],
  values: [
    {
      field: ["data", "sort_date"],
      reverse: true
    },
    {
      field: ["ref"]
    }
  ]
}

然后我绘制结果以通过参考获取每个文档。

Map(
  Paginate(Match(Index("posts_desc")), {
    after: [Ref(Collection("posts"), "Ref ID for 6th Document")],
    size: 5
  }),
  Lambda(["date", "ref"], Get(Var("ref")))
)

在 运行 这之后,无论是在我的代码中还是通过 Fauna shell,我仍然得到前 5 个结果。我使用原始索引 (all_posts) 进行了所有这些操作,但现在它似乎不起作用。此外,现在返回的 after 对象在数组的第一个位置有我的 sort_date 值,在第二个位置有 ref。我尝试将 ref 移动到索引的第一个位置,但这破坏了排序。任何帮助表示赞赏。

你的索引 return [sort_date, ref] 元组,所以你的 after 游标应该尊重这些值,你应该创建一个游标,其中第一个元素是日期,并且可以选择引用在第二个值上,即:

Paginate(Match(Index("posts_desc")), {
  after: [Date("2020-07-23")],
  size: 5
})