如何在Fauna DB中分页排序索引?

时间:2020-07-23 15:41:41

标签: faunadb

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

这是我的索引:

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移到索引中的第一位置,但这破坏了排序。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

您的索引返回[sort_date, ref]的元组,因此您的after游标应该尊重这些值,您应该在第一个元素是日期的地方创建一个游标,并在第二个值上选择一个ref,即:

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