嵌套查询缓存在Apollo中重定向

时间:2018-07-18 11:37:46

标签: apollo react-apollo apollo-client

在Apollo中我有一个关于cacheRedirects的问题,我有一个项目概述和一个detailview。我希望将detailview缓存重定向到概述中的某个项(例如文档中的the book example)。

唯一的是,我想重定向到的东西只能从更大的父查询中查询。

因此,扩展图书示例将是:

# for all books
library (id: ID) {
    books (params) {
        id
        title
    }
}

# for a single book
library (id: ID) {
    book (id: ID) {
        id
        title
    }
}

如果我想拿一本书,我将重定向到什么?

我认为我无法做到这一点,因为我实际上是在获取图书馆以获取书籍:

cacheRedirects: {
    Query: {
        book: () => {
            // return book id from cache
        }
    }
}

是否有一种方法可以将对图书的查询(通过library重定向到图书数据?还是我以错误的方式考虑这个问题?

1 个答案:

答案 0 :(得分:2)

我不知道您也可以直接解析类型,所以在这种情况下:

cacheRedirects: {
  Library: {
    book: (_, args) => toIdValue(dataIdFromObject({ id: args.id, __typename: 'Book' }))
  }
}

应该用于从图书馆重定向到缓存的图书。