【发布时间】:2023-03-27 04:06:01
【问题描述】:
我在生产环境中使用 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
})
}
}
}
【问题讨论】:
标签: graphql apollo apollo-client vue-apollo