Как настроить схему Absinthe с именами полей, отличными от имен базовых полей Ecto?

Например, я хотел бы позвонить inserted_on отметка времени created_at в переднем конце в следующей схеме абсента:

defmodule MyAppWeb.Schema.AccountTypes do
  use Absinthe.Schema.Notation

  object :user do
    field :id, :id
    field :email, :string
    field :inserted_on, :datetime
  end
end

но я не уверен, как настроить отображение Ecto <-> Absinthe. Должен ли я просто добавить виртуальное поле в мою схему Ecto?

1 ответ

Одним из вариантов будет использование опции:source в схемах Ecto для полей базы данных, чтобы вы могли использовать свое собственное внутреннее имя:

defmodule MyAppWeb.Schema.AccountTypes do
  use Absinthe.Schema.Notation

  object :user do
    field :id, :id
    field :email, :string
    field :created_at, :datetime, source: :inserted_on
  end
end

Но лучшим вариантом, вероятно, было бы установить правильное имя поля в макросе запроса:

defmodule My.Schema do
  use Absinthe.Schema
  query do
    field :created_at, :string do
      resolve &MyResolver.inserted_on/3
  end
end

.. или использовать свой собственный тип данных вместо строки..

Другие вопросы по тегам