Javascript Can';t转换/规范化/修改GraphQL查询的响应-Apollo客户端
有人有过修改响应数据的售后服务经验吗Javascript Can';t转换/规范化/修改GraphQL查询的响应-Apollo客户端,javascript,graphql,apollo,apollo-client,Javascript,Graphql,Apollo,Apollo Client,有人有过修改响应数据的售后服务经验吗 const parseResponse = new ApolloLink((operation, forward) => { return forward(operation).map((response) => { response.data.parsed = transformData(response.data) return response }) }) const link = par
const parseResponse = new ApolloLink((operation, forward) => {
return forward(operation).map((response) => {
response.data.parsed = transformData(response.data)
return response
})
})
const link = parseResponse.concat(networkLink)
这在WebSocket事件上非常有效-数据被转换,添加到数据
响应中的解析的字段中。数据,但在常规的Apollo客户端v3上引入了以下功能:
您可以自定义如何读取和写入Apollo客户端缓存中的各个字段。为此,需要为给定字段定义一个FieldPolicy
对象。将FieldPolicy
对象嵌套在与包含该字段的类型对应的任何对象中
以下是如何将日期字符串解析为日期对象:
export const apolloClient=新apolloClient({
链接:。。。,
缓存:新的InMemoryCache({
类型策略:{
职位:{
字段:{
更新日期:{
读取(时间:字符串){
返回新的日期(时间);
},
},
},
},
},
}),
});
查询实际上就像一个redux选择器,只获取它们要查询的字段。这意味着您的查询实际上在缓存上运行。当查询结果进入时,它被集成到缓存中,然后从那里进入组件。我想这就是失去球场的地方。你在这里做的事情看起来会在某个时候给你带来麻烦。考虑不同地解决这个问题,例如在组件中解析。在组件中总是解析意味着不必要的样板。使用RESTAPI,我只是创建了一个规范化消息的中间件。理想情况下,Apollo客户端应该提供一种中间件机制,我可以在其中转换缓存和客户端之间的响应:/