AngularでApllo Clientを使っていて、typenameが意図しないものになる事があります。
こうなるとGraphqlQLの呼び出しが失敗します。
意図したtypenameを付ける方法を調べたのですが分かりませんでした。
対象のコード
Angular側では、graphql-tagを使って以下のように定義しています。
sample.ts
private readonly saveSiteConfigMutation = gql`
mutation savesiteconfig($savesiteconfig: SaveSiteConfig!) {
savesiteconfig(savesiteconfig: $savesiteconfig) {
result
message
}
}
`;
期待としては、__typenameにはSaveSiteConfigが設定されて欲しいのですが、何故だかSiteConfigとなってしまいます。
回避方法
そもそもtypenameは必要ないんだよなということで調べて見たら、https://github.com/apollographql/apollo-client/issues/1913 を見つけました。
希望通り、typenameを付けない方法です。
sample.ts
apollo.create({
link,
cache: new InMemoryCache({
addTypename: false
})
});
これが正解なのか分かりませんが、問題は解決しました。
令和最初のQiita投稿でした。