私はPhoenixとAbsintheでElixirを使用して、GraphQLバックエンドをセットアップしています。
理想的には、次のような構造にしたいと考えています。
{
posts {
published {
title
}
draft {
title
}
}
}
そのためには、スキーマ内のフィールドを、およびposts
に応答するオブジェクトに委任する必要があると考えました。私はこれを次のようにしました:published
draft
# In my Schema
field :posts, type: :posts_by_state
# In my Post type definitions
object :post do
# ...
end
object :posts_by_state do
field :published, list_of(:post) do
resolve fn _, _, _ -> ... end
end
field :draft, list_of(:post) do
resolve fn _, _, _ -> ... end
end
end
これは機能せず、代わりにフィールドnull
全体を返しますposts
。ただし、posts
スキーマのフィールドを変更して「空白の」リゾルバーを含めると、期待どおりに機能しました。
field :posts, type: :posts_by_state do
resolve fn _, _, _ -> {:ok, []} end
end
これはベスト プラクティスですか、それともオブジェクトに完全にデリゲートするようにフィールドに指示するより良い方法はありますか? より一般的には、これを構造化するためのより良い方法はありますか?