初めてGatsbyを試してみると嬉しいです。しかし、私は奇妙なGraphQLの問題に遭遇しました:Graphqlは任意に割り当てられたマークダウンフロントマターデータ(一部ではありません)を無視します
私はマークダウンファイルからコンテンツを引き出すためにgatsby-source-filesystemとgatsby-transformer-remarkプラグインを使用しています。
フロントマターのデータがすべて同じではありません(title
を除く)。いくつかはdate
文字列(ブログの投稿)を持っています、同じtag
配列を持って、いくつかはgallery
オブジェクトを持っています。
ここで問題になるのは、この任意に割り当てられたフロントマターデータの一部がGraphQLで利用可能であり、一部がそうでないことです。たとえば、私は日付を照会しようとすると、私はいつも "GraphQLエラー不明フィールドdate
タイプfrontmatter_2
"を取得します。一方、私はタグを照会すると、私はそれらを持っている人のために1つとtags: null
を含むそれらの項目のためのタグ配列を得ます。
ここで問題は何ですか?ノードに存在しないフィールドの値として常にnull
を取得するにはどうすればよいですか?
マークアップファイルのディレクトリ構造によってこの動作が変わることに注意してください。私がそれらを動かすと、それ以前にはなかったいくつかのfrontmatterフィールドがGraphQLで利用可能になり、その逆もあります。いくつかのコード変更がHMRを介してプッシュされた後に、いくつかのフィールドが利用可能になります。しかし、Gatsbyを再起動すると、コードを間に入れていなくても、再び消えてしまいます。
ありがとうございました!
編集:
失敗したいくつかの時間のために、この反対私の頭を叩いた後、私はすべての値下げfrontmatterは、同じタイプの同じフィールドを持っていることを確実にすることに頼っ。
私は、自動推論タイプ/フィールド上のドキュメントに
TODOリンクを推測します。
documentationの部分についてです。
私はもっと時間があれば、GraphQLとそれがGatsbyでどのように機能するかについてもっと学びたいと思います。任意のポインタが高く評価されました。
ない直接の回答が、ギャツビーとGraphiQLをチェックアウトし、それが利用可能なデータを理解する上で大きな助けです。 http:// localhost:8000/___ graphql – chmac
ご意見ありがとうございます。私はGraphiQLについて知っており、それは確かに非常に有用です。しかし、私の問題は、gatsby-transformer-remarkがどのようにフロントマーカを解析し、どのデータがノードインタフェースでどのように終わるかを決定する方法です。 - 私は質問をして以来、多くの更新がありました。多分それは修正されました...私はもう一度やり直してください。 –
Gatsbyは利用可能なデータからGraphQLスキーマを推論します。 [この](https://github.com/gatsbyjs/gatsby/issues/3913)問題は、すべてのレコードには存在しない場合、たまに落ちてしまうかもしれません、いくつかのフィールドことを示唆しています。少なくとも現時点では、すべてのフィールドがすべてのドキュメントにあることを確認するという回避策がおそらく最も堅牢な解決策です。 – chmac