我应该使用什么代替解析器?

问题描述

因为您已经知道不推荐使用本地解析器,所以我们不能将其用作处理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完全不同。 本地字段也不好,因为它与字段有关而不是与整个实体有关。