Я использую Elixir с Phoenix и Absinthe для настройки бэкэнда 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
Это лучшая практика или есть лучший способ указать, что поле должно полностью делегироваться объекту? В целом, есть ли лучший способ структурировать это?