我正在用 Gatsby 和 GraphQl 制作博客,但我找不到避免查詢中代碼重復的方法。我有 3 個幾乎相同的查詢:
graphql(`
{
allContentfulRecette {
edges {
node {
id
nom
}
}
}
}
`)
graphql`
query IndexQuery {
posts : allContentfulRecette(sort: {fields: dateDePublication}){
edges {
node {
id
nom
}
}
}
}
`
graphql`
query allRecettesByCategorie($slug: String!) {
recettes : allContentfulRecette(
sort: {fields: dateDePublication}
filter: {categorie: {elemMatch: {slug: {eq: $slug}}}}
) {
edges {
node {
id
nom
}
}
}
}
`
正如你所看到的,它們非常相似,第二個只有一個排序,第三個有一個排序和一個過濾器。我的問題是,我擁有的不僅僅是 2 個引數“id”和“nom”,因此每次我在無頭 CMS 中編輯欄位時,很難在不同頁面中維護這 3 個請求。
我試圖做這樣的事情,但我得到了這個錯誤:“graphql 標簽中不允許字串插值:”
export const pageQuery = graphql`
query IndexQuery {
posts : allContentfulRecette(sort: {fields: dateDePublication}){
${allContentfulRecette}
}
}
`
有沒有一種方法可以將我的請求的通用元素(“邊緣”內的所有內容)放在一個地方并在不同的請求中使用它?
uj5u.com熱心網友回復:
我認為您正在尋找片段:
GraphQL 包括稱為片段的可重用單元。片段讓您可以構建欄位集,然后將它們包含在需要的查詢中。以下是如何使用片段解決上述情況的示例:
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/358102.html
標籤:javascript 图形 盖茨比
上一篇:無法在日期輸入上設定最大日期
