[英]How do you define a fragment using graphql-js?
如何使用graphql-js在架構中定義片段?
import graphql from 'graphql'
/* how do I do this?
fragment authorInfo on Author {
name
}
*/
例如,要定義作者類型,我將:
import graphql from 'graphql'
export default new graphql.GraphQLObjectType({
description: `An author`,
name: {
description: `The author's legal name.`,
type: GraphQLString
}
}),
name: `Author`
})
因此,這里的類型定義是由GraphQLObjecType
生成的。 什么功能生成片段?
您沒有在架構中定義片段。 您在查詢時在graphql接口上定義。 這是關於不要重復自己。
我們可以在一個query{ }
進行多達不同的查詢
query {
company(id:"1"){
name
description
}
company(id:"4"){
name
description
}
}
如果這樣做,則會出現錯誤:字段“ company”沖突,因為它們具有不同的參數。 為了消除這種情況,我們可以通過在前面寫一些任意鍵來命名查詢返回時的結果。 我們收到此錯誤的原因是響應對象將具有2個嵌套對象,並且它們都將具有“ company”鍵值,但是在javascript中,我們不能在對象上具有重復鍵。
{
apple: company(id:"1"){
name
description
}
google: company(id:"4"){
name
description
}
}
現在我們解決了這個問題。 想象一下,我們想在一個具有太多字段的查詢對象中進行100個查詢。 這將是一個很大的頭痛。 所以我們定義片段
fragment companyDetails on Company{
name
description
}
請注意,我們必須on Company
上指定。 它有助於graphql進行類型檢查。 graphql檢查這些字段在company下是否有效。 最終,這就是我們的使用方式
{
apple: company(id:"1"){
...companyDetails
}
google: company(id:"4"){
...companyDetails
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.