2

gatsby と graphql を使い始めたばかりで、cms として Prismic を使い始めました。オーバーフェッチを回避して、ネストされたクエリを実行する方法がわかりません。それが可能かどうか、それとも SQL 用語で問題を考えているだけなのかさえわかりません。

Prismic には、コンテンツ関係を使用して関連する 2 つのカスタム タイプがあります。これらは、繰り返し可能なフィールドのグループを通じてProductions多くのものを持っています。People私が望む結果は、誰が主演したかのリストでhome最新のものを表示するページ( )と、すべての の各人物とすべての役割を含む別のページを持つことです。productionpeoplepeopleproduction

ページpeople内のすべてを取得し、必要なデータをフロントエンドで取得し、javascript を介してフィルタリングすることで、これを行うことができました。ただし、私のページに必要な人だけでなく、すべての人を取得する必要があるため、この方法は理想的ではないと本当に感じています。homeproduction

    allPrismicProduction(
      limit: 1
      sort: { fields: [last_publication_date], order: DESC }
    )  {
    edges {
      node {
        data {
          casting {
            ...castingData
          }
        }
      }
    }
  }
    allPrismicPerson {
      edges {
        node {
          id
          data {
            name {
              text
            }
            photo {
              url
            }
          }
        }
      }
    }
  }

const productions = data.allPrismicProduction.edges
const people = data.allPrismicPerson.edges
const sortedprods = []
productions.forEach(el => {
    let castings = el.node.data.casting.map(cast => cast.person.uid)
    castings.forEach(casting =>{
    people.filter(person => {
      if(castings.indexOf(person.node.uid) > -1){
        return person
      }
    sortedprods.push({
      production: el.node,
      people: relpeople,
    })
  })
})

だから私はすべてをフェッチし、クエリによって返されたs で見つかっpeopleた s に従ってそれらをフィルタリングします。uidproduction

可能かどうか、またはこれを達成するためのより良い方法は何か、クエリの最初の部分で指定された s に存在するpeople人のみをフェッチできるようにすることで、オーバーフェッチを制限する方法を知りたいです。この考え方はgraphqlと互換性がありますか?uidproduction

4

1 に答える 1