簡體   English   中英

如何在Elixir中使用苦艾酒在查詢中的嵌套項目上使用參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM