apollo - 我应该使用什么来代替解析器?
问题描述
正如您已经知道,本地解析器已被弃用,因此我们不能将其用作处理 REST 缓存的透视方式。我们应该使用什么来代替解析器?“现场政策”对此根本没有好处。让我们想象一下……您有两个不同的客户端查询:getBooks 和 getBook。每个查询都从其余 API 获取数据。当我们已经从 getBooks 获取数据并运行另一个查询 getBook 时,我们需要以某种方式处理这种情况。getBook 不应发出请求,因为数据已被缓存。在它被弃用之前,我们在解析器中这样做了。我们只是检查缓存,如果没有请求,则返回缓存中已经存在的数据。在目前的情况下,我们该如何处理?
解决方案
对不起,但这有点不是我的意思。这是一个代码示例:
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 完全不同。本地字段也不好,因为它是关于字段而不是整个实体的东西。
推荐阅读
- javascript - 单击复选框删除最后一个输入字段
- symfony - Symfony Easyadmin 角色的选择类型字段
- javascript - 在 JavaScript 中定义 json 键有什么规则吗?
- javascript - 尝试将每个带有逗号分隔值的元素也作为数组元素推送
- vb.net - VB.NET DataSet 表数据为空
- php - 将变量函数参数传递给 PHP 中的另一个函数
- java - 如何找到路由的所有端点(Apache Camel,Java)
- sql - T-SQL 将一行包含 3 组不同生效日期的数据拆分为 3 行
- java - 检查是否未使用 Mockito 调用方法
- python - 使用格式打印在运行时可以包含未知数量变量的列表?