0

私はPhoenixとAbsintheでElixirを使用して、GraphQLバックエンドをセットアップしています。

理想的には、次のような構造にしたいと考えています。

{
  posts {
    published {
      title
    }
    draft {
      title
    }
  }
}

そのためには、スキーマ内のフィールドを、およびpostsに応答するオブジェクトに委任する必要があると考えました。私はこれを次のようにしました:publisheddraft

# 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

これはベスト プラクティスですか、それともオブジェクトに完全にデリゲートするようにフィールドに指示するより良い方法はありますか? より一般的には、これを構造化するためのより良い方法はありますか?

4

1 に答える 1