【问题标题】:Faunadb after returning the same entries as the original ones返回与原始条目相同的条目后的 Faunadb
【发布时间】:2020-12-20 01:29:47
【问题描述】:

我正在使用动物区系数据库和 vuejs 在滚动上创建分页。为了实现分页,我从原始响应中传递最后一个条目的引用,并使用 after 进行查询,由于某种原因,我仍然得到与原始数组相同的响应。值得一提的是,我的初始查询是基于时间戳属性的反向查询,以便首先获取最新项目。我认为这不会引起问题,欢迎任何建议。我的初始查询,没有后字段。

await client.query(
    q.Map(
      q.Paginate(
        q.Match(q.Index("school_query_reverse")),
        {
          after: [q.Ref(q.Collection("school_queries"), params.params.id)],
          size: 100
        }
      ),
      q.Lambda([
        'ts',
        'ref'
      ],
        q.Get(q.Var("ref"))
      )
    )
  )

【问题讨论】:

  • 如果初始查询的响应中没有 after 字段,则没有其他可以分页的值。
  • 另外,分页响应中的after 字段指向下一页开头的项目,而不是当前页面的最后一项。
  • 您可能会发现分页教程对您有所帮助:docs.fauna.com/fauna/current/tutorials/indexes/pagination

标签: vue.js pagination facebook-fql faunadb


【解决方案1】:

这是一个重复的问题,我已经回答了 here。您是否会考虑编辑该文件而不是打开一个包含额外信息的新文件以保持 Stack Overflow 井井有条?

鉴于您的索引包含两个值(ts 和 ref),我可以从您的 lambda 和您之前的问题中得出这两个值,因此 this after 语法将不起作用。您必须至少指定三个值。这样的光标将如下所示:

  after: [
      1599220462170000,
      Ref(Collection("school_queries"), "275735235372515847"),
      Ref(Collection("school_queries"), "275735235372515847")
    ]

您可能想知道为什么其中有三个值。这是因为索引包含您的引用,并且引用总是添加到光标。在索引中再次使用它会导致它被添加两次。为什么和/或我们是否无法优化我不知道,但这就是它目前的工作方式:)。

如果我在您的查询中调整后面的内容,那将变成:

 after: [
    1599220462170000,
    q.Ref(q.Collection("school_queries"), params.params.id)
    q.Ref(q.Collection("school_queries"), params.params.id)
  ]

【讨论】:

    【解决方案2】:

    为了继续分页,我在 [1599220462170000] 之后添加了以下内容,这将在时间戳之后继续排序。

    【讨论】:

      猜你喜欢
      • 2016-06-03
      • 2012-04-25
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      相关资源
      最近更新 更多