時々引数が異なる同じフィールドを指定したいことがあります。そんな時以下のようにしてもfieldConflict
エラーになってしまいます。
{
user(login: "a") {
id
}
user(login: "b") {
id
}
}
これは同じuser
というキーに別々の結果を入れようとするからです。(ちなみに引数がまったく同じだと許容される)
これはそれぞれの結果を格納するキーを別の名前に変更することで回避できます。それには各フィールドの前に<alias>:
を付けます。
引数を持つフィールドだけでなく、持たないフィールドにも使えます。
{
viewer1: viewer {
login
}
viewer2: viewer {
name: login
}
user1: user(login: "nju33") {
id
}
user2: user(login: "nju33") {
uid:id
}
}
この結果は以下の通りです。親フィールドにviewerN
やuserN
という名前が付いてることが分かります。また子フィールドでもlogin
をname
やid
にuid
としてます。
{
"data": {
"viewer1": {
"login": "nju33"
},
"viewer2": {
"name": "nju33"
},
"user1": {
"id": "MDQ6VXNlcjE1OTAxMDM4"
},
"user2": {
"uid": "MDQ6VXNlcjE1OTAxMDM4"
}
}
}