ブログ

BLOG

GraphQLで同じフィールドを複数使いたいときは名前をつけてデータを取得しよう

GraphQL ではさまざまなデータを取得することができます。
普段、Gatsby.js をマークダウン形式で使っている場合、データの取得方法は例えば、

GraphQL

allMarkdownRemark {
  edges {
    node {
      html
      headings {
        depth
        value
      }
      frontmatter {
        title
        category
      }
    }
  }
}

こういう感じになると思います。

使い方は、例えば、title を表示する場合は、

data.allMarkdownRemark.edges.node.frontmatter.title

などになります。

カテゴリー毎に分けたい

allMarkdownRemarkcategory 毎に取得分けたいとなった場合、取得した後に分けてもいいんですけど、この取得時に分けることもできます。どうやるか?

allMarkdownRemark{} を2つ書くことになります。が!

// category sort: fruit
allMarkdownRemark(filter: {frontmatter: {category: {eq: "fruit"}}}) {
}

// categroy sort: vegetable 
allMarkdownRemark(filter: {frontmatter: {category: {eq: "vegetable"}}}) {
}

と書きたいところですが、これだと、取得するときにどうしますか?区別がつきませんね。

こういうときはどうするかというと、
名前を付けます。

名前の付け方と取得方法

GraphQL では名前を付けることができます。どのようにつけるかは下記を見てみてください。

// category sort: fruit
fruitData: allMarkdownRemark(filter: {frontmatter: {category: {eq: "fruit"}}}) {
}

// categroy sort: vegetable 
vegetableData: allMarkdownRemark(filter: {frontmatter: {category: {eq: "vegetable"}}}) {
}

こんな感じで付けることができます。
形はこんな感じです。

{任意の名前}: フィールド名 {}

取得の方法は、

// category sort: fruit
data.fruitData.edges.node.frontmatter.title

// categroy sort: vegetable 
data.vegetableData.edges.node.frontmatter.title

になります。
簡単ですね。

こうすることにより、 allMarkdownRemark{} を2つ使うことができます。

サンキュ!!

お問い合わせ・ご相談CONTACT

オクワスでは、Webを通して魅力を最大限に伝えるお手伝いをしております。ホームページ制作やWebからの集客などでのお困りごと、Web開発で人手が足りないなどございましたら一度お気軽にご連絡ください。

お問い合わせフォームまたは𝕏のDMからご相談お受けしております。

お問い合わせフォームへDMからご連絡ください
© 2015 - 2024 Okuda Kouki