GET / api上的Poison.EncodeError无法编码值:{nil," paths"}

时间:2017-08-24 03:47:49

标签: elixir phoenix-framework elixir-poison

尝试渲染json数据时,我的控制器出现以下错误。

Poison.EncodeError at GET /api
unable to encode value: {nil, "paths"}

web/controllers/api_controller.ex:1 App.ApiController.action/2

在搜索之后我尝试了这样的模型:

defmodule App.Api do
  use App.Web, :model

  @derive {Poison.Encoder, only: [:basePath, :definitions, :paths]}
  schema "apis" do
    field :basePath, :string
    field :definitions, :string
    has_many :paths, App.Path

    timestamps()
  end
end

似乎无法解决错误。尝试在我的控制器中预加载路径字段后,我收到此错误,如下所示:

defmodule App.ApiController do
  use App.Web, :controller

  alias App.Api

  def index(conn, _params) do
    apis = Repo.all(Api) |> Repo.preload(:paths)
    render conn, "index.json", apis: apis
  end
end

我能够将数据find插入到我的数据库中,我可以用以下方式查询:

Repo.all(Api) |> Repo.preload(:paths)

还有什么想法尝试?感谢

1 个答案:

答案 0 :(得分:1)

如果您要预加载:paths,则应在derive模块上使用Documentr2.Path

@derive [Poison.Encoder]

@derive {Poison.Encoder, only: [:field_you_want]}