web-dev-qa-db-ja.com

Graphql:タイプが文字列の場合、パラメーターをスキップ

MarkdownのフロントマッターからtitleauthorcoverImgを要求するMarkdownファイルのgraphqlクエリがあります。

一部のMarkdownファイルにはカバー画像がなく、画像がない場合、coverImgのタイプはStringのように見えます

使ってます gatsby-imagesharpを使用し、coverImgがオブジェクトで文字列ではない場合、coverImgパラメータの子に降りたい


これは私の質問です

query($path: String!) {
    markdownRemark(fields: { slug: { eq: $path } }) {
        frontmatter {
            title
            author
            coverImg {
              childImageSharp {
                fluid(maxWidth: 600) {
                  src
                  srcSet
                  sizes
                  aspectRatio
                }
              }
           }
        }
     }
 }

これを試すとエラーが表示されます

There was an error in your GraphQL query:

Field "cover" must not have a selection since type "String" has no subfields.

This can happen if you e.g. accidentally added { } to the field "cover". If you didn't expect "cover" to be of type "String" make sure that your input source and/or plugin is correct.

graphql ifステートメント があるようですが、これらを使用して条件付きで子に分岐する方法がわかりません。次のようなものを追加できるといいですね

 coverImg @skip(if: coverImg is String) {
3
Sam

Ithinkgraphql union types を使用して、必要なことを実行できるはずです。私はそれらをオブジェクトではなく文字列で使用したことがありませんが、それを行う方法があるはずです????

0
JuanCaicedo