gatsby と graphql を使い始めたばかりで、cms として Prismic を使い始めました。オーバーフェッチを回避して、ネストされたクエリを実行する方法がわかりません。それが可能かどうか、それとも SQL 用語で問題を考えているだけなのかさえわかりません。
Prismic には、コンテンツ関係を使用して関連する 2 つのカスタム タイプがあります。これらは、繰り返し可能なフィールドのグループを通じてProductions
多くのものを持っています。People
私が望む結果は、誰が主演したかのリストでhome
最新のものを表示するページ( )と、すべての の各人物とすべての役割を含む別のページを持つことです。production
people
people
production
ページpeople
内のすべてを取得し、必要なデータをフロントエンドで取得し、javascript を介してフィルタリングすることで、これを行うことができました。ただし、私のページに必要な人だけでなく、すべての人を取得する必要があるため、この方法は理想的ではないと本当に感じています。home
production
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 に従ってそれらをフィルタリングします。uid
production
可能かどうか、またはこれを達成するためのより良い方法は何か、クエリの最初の部分で指定された s に存在するpeople
人のみをフェッチできるようにすることで、オーバーフェッチを制限する方法を知りたいです。この考え方はgraphqlと互換性がありますか?uid
production