JSSアプリで接続されたGraphQLのトラブルシューティング

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

JSSアプリで接続されたGraphQLを使用すると、次の問題が発生する可能性があります。

コンポーネントは、型付きフラグメントを使用してクエリを実行するときにデータを受け取りません

テンプレートの型指定ベースのフラグメントを使用してクエリを実行する場合があります。例えば:

item {
  # AppRoute is a Sitecore Template-based GraphQL type
  ...on AppRoute {
    pageTitle {
      value
    }
  }
}

この場合、Apollo Clientでは、生のGraphQLレスポンスがvalueを返すが、JSSアプリはコンポーネントレベルでそれを受け取らないという状況が発生する可能性があります。Apollo Clientは、GraphQLデータのスマートキャッシュを維持します。GraphQLタイプを効果的にキャッシュするには、GraphQL APIのスキーマに関する情報を知っている必要があります。Sitecoreテンプレートのリファクタリングに反応してスキーマが変更されると、このデータは古くなり、スキーマ データが正しくないと不適切なキャッシュが発生する可能性があります。

スキーマデータを更新するには、jss graphql:updateを実行して、GraphQLエンドポイントから最新のスキーマデータを取得します。更新されたデータをソース管理にコミットする必要があります。

テンプレート名の競合

GraphQLでは、タイプとフィールドの名前は一意である必要がありますが、Sitecoreでは複数のテンプレートに同じ名前を付けることができます。厳密に型指定されたテンプレートフィールドと併用すると、Experience Edgeスキーマは 、最新の作成日のアイテムまたはフィールドアイテムに _{guid} を追加することで、名前の競合を処理します。

この記事を改善するための提案がある場合は、 お知らせください!