Skip to content

contentfulのcontent modelの変更が反映されない

📅 July 04, 2021

⏱️3 min read

皆さんどうもこんちは、走りすぎて死にかけているランニング犬おじさんです。

このブログは、gatsby・netlify・contentfulというJAMstackな構成にしています。せっかくなので、技術系だけではなく、趣味のランニング記事も書こうと思いcontentfulのcontext modelを修正しました。が、しかし、gatsbyのGraphQLで全く反映されず、無駄に時間を溶かしたので備忘録です。

結論

gatsbyの src/gatsby/schema/schema.gql に新たに追加したcontent modelの型を追加する。 (GraphQL知ってる人なら常識?)

経緯

1つのブログで2つのジャンルの記事を書くので、できればTOPでそれぞれの記事がマージされた状態で表示されるのは回避したい。ということで、contentfulの記事に新たにcategoryというカラムをもたせて、gatsby側で、category === 'running' かどうかでこれまでの技術ネタのブログ記事なのか、新たに追加するランニングのブログの記事なのか仕分けるようにしました。

gatsbyキャッシュ効きすぎる問題

gatsbyをローカルで起動すると、.cashでいろりろキャッシュしてくれている模様。

gatsby clean

で、キャッシュ抹殺する。(が、反映されない)

ひたすらググる

https://github.com/gatsbyjs/gatsby/issues/14160

それっぽい記事が出てくる。

Have you refreshed the GraphiQL interface as well after running gatsby develop again?

gatsby develop を再起動しろばかり目がいってたのですが、graphqlのschemaをそもそも変更するの忘れてた。(というか、graphqlのこと何も知らないので、schemaの存在すら知らなかった。)

ということで、content model更新 src/gatsby/schema/schema.gql のschemaファイルに追加したmodelの型情報追加で、graphqlが新しく追加されたカラムも引っ張って来てくれるようになりました。

記事の生成を追加する

あとは、./gatsby-node.js で指定されている createPage メソッドをよしなに修正して、いい感じにランニング記事たちも生成するように修正しました。私の場合は、

exports.createPages = require('./src/gatsby/node/createPages')

./src/gatsby/node/createPages こいつを修正。

まとめ

gatsby使うならgraphqlの hello world くらいしておけ!!!!

gatsbyも何もわかってなかったけど、色々ブログ改造していくと徐々にわかってきた。

← PrevNext →
  • @masayuki031