【问题标题】:What I should use instead of resolvers?我应该使用什么来代替解析器?
【发布时间】:2020-12-21 16:42:00
【问题描述】:

您已经知道本地解析器已被弃用,因此我们不能将其用作处理 REST 缓存的透视方法。我们应该使用什么来代替解析器? “现场政策”对此根本没有好处。让我们想象一下……您有两个不同的客户端查询:getBooks 和 getBook。每个查询都从其余 API 获取数据。当我们已经从 getBooks 获取数据并运行另一个查询 getBook 时,我们需要以某种方式处理这种情况。 getBook 不应发出请求,因为数据已被缓存。在它被弃用之前,我们在解析器中这样做了。我们只是检查缓存,如果没有请求,则返回缓存中已经存在的数据。在当前情况下,我们该如何处理?

【问题讨论】:

  • 有什么方法可以添加一些代码示例? (很难理解你的 Q)。此外,也许将您的文本分成段落(更具可读性)。

标签: apollo apollo-client


【解决方案1】:

对不起,这有点不是我的意思。这是一个代码示例:

export const getBooks = gql`
    query getBooks () {
        getBooks ()
            @rest(
                type: "Book"
                path: "books"
                endpoint: "v1"
            ) {
            id
            title
            author
        }
    }
`

export const getBook = gql`
    query getBook ($id: Int!) {
        getBook (id: $id)
            @rest(
                type: "Book"
                path: "book/{args.id}"
                endpoint: "v1"
            ) {
            id
            title
            author
        }
    }
`

所以我们有两个不同的查询。目标是当我们轮流运行 getBook 时,不应该发出 REST 请求,因为我们已经在缓存中拥有相同的数据,因为我们是从 getBooks 获取的。在不推荐使用解析器之前,我们在解析器中处理它。喜欢:如果缓存中不存在此 ID,只需发出请求(如果存在),将缓存中的数据提供给我。我们现在怎么做?

您可以看到 fetchPolicy 它完全不同。 本地字段也不好,因为它是关于字段而不是关于整个实体的东西。

【讨论】:

  • 请仅使用发布答案按钮获取实际答案。您应该修改原始问题以添加更多信息。
猜你喜欢
  • 2010-11-05
  • 2010-12-06
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
相关资源
最近更新 更多