[英]Elixir: Using Absinthe to query Dgraph, a graph database. GraphQL to GraphQL+ mapping
[英]How to use arguments on nested items in my query using Absinthe in Elixir?
我試圖找出如何使用苦艾酒在查詢中的嵌套項目上使用參數。
我想要完成的是:
{
users(order: ASC) {
id
email
clients(order: DESC) {
id
email
}
}
}
這是我的架構和類型:
query do
@desc "Get all users"
field :users, list_of(:user) do
arg :order, type: :sort_order, default_value: :asc
resolve &Resolvers.users/2
end
end
@desc "A user"
object :user do
field :id, :id
field :email, :string
field :clients, list_of(:user)
end
和解析器:
def users(_, args, _) do
args
|> Enum.reduce(User, fn
{:order, order}, query ->
query |> order_by({^order, :email})
end)
|> Repo.all |> Repo.preload([:clients])
end
因此,我的問題是如何和在何處為客戶放置排序參數? 在上面的示例中,我得到一個錯誤:
"message": "Unknown argument \"order\" on field \"clients\" of type \"User\"."
將參數放在clients
字段下:
object :user do
field :id, :id
field :email, :string
field :clients, list_of(:user) do
arg :order, type: :sort_order, default_value: :asc
resolve &Resolvers.clients/2
end
end
然后編寫一個解析器來處理排序:
def clients(user, %{order: clients_order}, _) do
sorted_clients = user.clients # TODO sort those clients into the desired order
{:ok, sorted_clients}
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.