【发布时间】:2019-08-11 02:14:33
【问题描述】:
我尝试在 GraphQL 的 Apollo 客户端中更改 addTypeName: false
apollo.create({
link: httpLinkWithErrorHandling,
cache: new InMemoryCache({ addTypename: false }),
defaultOptions: {
watchQuery: {
fetchPolicy: 'network-only',
errorPolicy: 'all'
}
}
但它可以工作,它会在控制台中抛出以下消息
fragmentMatcher.js:26 You're using fragments in your queries, but either don't have the addTypename:true option set in Apollo Client, or you are trying to write a fragment to the store without the __typename.Please turn on the addTypename option and include __typename when writing fragments so that Apollo Clientcan accurately match fragments.
,
Could not find __typename on Fragment PopulatedOutageType
和
fragmentMatcher.js:28 DEPRECATION WARNING: using fragments without __typename is unsupported behavior and will be removed in future versions of Apollo client. You should fix this and set addTypename to true now.
即使我将 false 更改为 true new InMemoryCache({ addTypename: true }),,由于突变中不需要的类型名,突变也会开始失败
有什么办法可以解决这个问题
【问题讨论】:
-
在这里提问和回答:Apollo boost - __typename in query prevent new mutation。如果您使用查询结果作为初始状态,则需要先对其进行转换以去除
__typename字段(以及任何其他可能不是有效输入字段的字段)。
标签: node.js graphql apollo apollo-client express-graphql