1

例如,我想在以下 Absinthe 模式中调用前端的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 架构中添加一个虚拟字段吗?

4

1 回答 1

0

一种选择是在 Ecto 模式中为数据库字段使用 :source 选项,因此您可以使用自己的内部名称:

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

..或使用您自己的数据类型而不是字符串..

于 2018-01-24T10:18:33.420 回答