我在生产中使用Apollo已有大约一年的时间,并且我正在尝试优化缓存管理。 让我们想象一下以下虚拟的简单模式:
type Query {
allBooks: [Book]
allCups: [Cup]
allColors: [Color]
}
type Book {
id: Int
name: String
cover_color_id: Int
CoverColor: Color
}
type Cup {
id: Int
name: String
cover_color_id: Int
CoverColor: Color
}
type Color {
id: Int
name: String
hex_code: String
}
我想配置cacheRedirects,以便当我需要Book.CoverColor或Cup.CoverColor(例如,通过allBooks)时;它将首先在缓存中查找具有匹配ID的颜色,然后再向服务器询问。 有可能吗?
谢谢!
PS:我尝试过这种方法,但似乎不起作用:
cacheRedirects: {
Query: {
// Stuff that perfectly works
},Book: {
// this is not even executed :(
CoverColor: (book,args,{ getcacheKey }) => {
return getcacheKey({
__typename: 'Color',id: book.cover_color_id
})
}
}
}