前提:GraphQLとそれをrubyから使うgraphql-ruby。
GraphQLはRESTやgRPCに並ぶAPIの新たな形式と言えるでしょう。
基本的なgraphql-rubyの使い方は下記がすごく詳しいです。
https://qiita.com/kielze/items/b2168d7214992e5d37bf
本題:graphql-rubyで配列を扱う(引数、返り値として)
題材として、Parentというオブジェクトを参照するクエリを下記のように作ります。
IDを引数にしてParent.find(id)
で参照しリターンします。
修正前のクエリ関数parent
query_type.rb
field :parent, Types::ParentType do
description "Parent API"
argument :id, !types.ID
resolve ->(obj, args, ctx) {
Parent.find(args[:id])
}
end
(先に完成版)新しいクエリ関数parents [引数・返り値が配列]
query_type.rb
field :parents, Types::ParentType.to_list_type do
description "Parent API"
argument :ids, !types.ID.to_list_type
resolve ->(obj, args, ctx) {
Parent.find(args[:ids])
}
end
大事なポイント:配列=to_list_type
(もしくはtypes[])
公式ドキュメントにこう記載されています。
field :newNames do
# ...
argument :values, types[types.String]
# or
argument :values, types.String.to_list_type
end
引数を配列に変換
types.ID
をtype.ID.to_list_type
とします。
返り値を配列に変換
Types::ParentType
をTypes::ParentType.to_list_type
とします。
実行結果
左画面にids:[1,2]
という配列が引数として入力されており、
右画面に返り値parents:[ 一つ目, 二つ目]
という配列が出力されています。
補遺
@yoshikyoto さま、修正ありがとうございます