如何在我的查询中使用Elixir中的Absinthe在嵌套项目上使用参数?
问题描述:
我想了解如何在我的查询中使用Absinthe嵌套项目上使用参数。如何在我的查询中使用Elixir中的Absinthe在嵌套项目上使用参数?
我试图做到的是:
{
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
此[Q &A](https://*.com/questions/34155439/getting-error-unknown-argument-id-on-field-user-of-type-query-graphql?rq=1)可能有些东西可以帮助你。 –