因为您已经知道不推荐使用本地解析器,所以我们不能将其用作处理REST缓存的一种透视方式。我们应该使用什么代替解析器? “外地政策”根本不适合这样做。想象一下...您有两个不同的客户端查询:getBooks和getBook。每个查询都从其余API获取数据。当我们已经从getBooks获取数据并运行另一个查询getBook时,就需要以某种方式处理这种情况。 getBook不应发出请求,因为数据已被缓存。我们在弃用它之前在解析器中进行了此操作。我们只是检查缓存,如果没有请求,则返回缓存中已经存在的数据。在当前情况下我们该如何处理?
答案 0 :(得分:0)
对不起,但这不是我的意思。这是一个代码示例:
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完全不同。 本地字段也不好,因为它与字段有关而不是与整个实体有关。