@OBJECTディレクティブ
@objectディレクティブを使用すると、ネストされたオブジェクトを1つのオブジェクトとして明示的に形成できます。
@objectディレクティブには引数がありません。
SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
driver {
driverId: driver_id
driverName: name
driverPoints: points
teamDetails: team @object {
teamId: team_id
teamName: name
teamPoints: points
}
}
');
前述の例では、出力のフィールド
teamDetailsがサブフィールドteamID、teamNameおよびteamPointsを持つオブジェクトであることを明示的に定義しています:
DATA
--------------------------------------------------------------------------------
{
"driverId" : 101,
"driverName" : "Lando Norris",
"driverPoints" : 282,
"teamDetails" :
{
"teamId" : 301,
"teamName" : "McLaren Mercedes",
"teamPoints" : 666
}
}
{
"driverId" : 102,
"driverName" : "Oscar Piastri",
"driverPoints" : 384,
"teamDetails" :
{
"teamId" : 301,
"teamName" : "McLaren Mercedes",
"teamPoints" : 666
}
}
....................
....................
20 rows selected.@objectディレクティブにlimit引数を指定すると、出力内のオブジェクト数を指定されたlimitの数に制限できます。SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
team (limit: 5) {
teamId: team_id
teamName: name
teamPoints: points
driver (limit: 1) @object {
driverId: driver_id
driverName: name
driverPoints: points
}
}
');前述の例のlimit引数では、teamオブジェクトが5件に制限されているため、5行のみが生成されます:
DATA
--------------------------------------------------------------------------------
{
"teamId" : 301,
"teamName" : "McLaren Mercedes",
"teamPoints" : 666,
"driver" :
{
"driverId" : 101,
"driverName" : "Lando Norris",
"driverPoints" : 282
}
}
{
"teamId" : 302,
"teamName" : "Ferrari",
"teamPoints" : 652,
"driver" :
{
"driverId" : 103,
"driverName" : "Charles Leclerc",
"driverPoints" : 312
}
}
...............................
...............................
5 rows selected.