Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graphql 苦艾酒联合类型解析器,提供到对象字段解析器的空映射_Graphql_Elixir_Absinthe - Fatal编程技术网

Graphql 苦艾酒联合类型解析器,提供到对象字段解析器的空映射

Graphql 苦艾酒联合类型解析器,提供到对象字段解析器的空映射,graphql,elixir,absinthe,Graphql,Elixir,Absinthe,我正在尝试在Absince中实现GraphQL联合类型 我们有两个对象,:foo和:bar以及一个联合类型:info,它解析为这些类型之一 object :contact do field :info, list_of(:info) end object :foo do field :phone, non_null(:string), resolve: fn foo, _ -> IO.inspect(foo) # <-- is %{} {:o

我正在尝试在Absince中实现GraphQL联合类型

我们有两个对象,
:foo
:bar
以及一个联合类型
:info
,它解析为这些类型之一

object :contact do
  field :info, list_of(:info)
end

object :foo do
  field :phone, non_null(:string),
    resolve: fn foo, _ ->
      IO.inspect(foo) # <-- is %{}
      {:ok, "hardcodedfornow"}
    end
end

object :bar do
  field :id, non_null(:string),
    resolve: fn id, _b ->
      IO.inspect(id) # <-- is %{}
      {:ok, "hardcodedfornow"}
    end
end

union :info do
  description("")

  types([:foo, :bar])

  resolve_type(fn
    %{"info" => "foo"}, _ ->
      :foo

    %{"info" => "bar"}, _ ->
      :bar
  end)
end
对象:联系do
字段:信息,列表(:信息)
结束
对象:foodo
字段:电话,非空(:字符串),
解决方法:fn foo,\u->
IO.检查(foo)#
IO.inspect(id)#“foo”},->
:foo
%{“info”=>“bar”},{->
:巴
(完)
结束
出于某种原因,每个自定义冲突解决程序都会收到一个空映射
%{}
作为其第一个参数

解析类型时,我们确实有一个带有
“info”
字段(以及更多字段)的映射


为什么自定义解析程序接收的映射与联合类型解析程序接收的映射不同?

问题在于我没有正确解析对象的字段

这是正确的:

object :foo do
  field :phone, non_null(:string) do
    resolve(fn foo, _, _ ->
      {:ok, foo["phone"]}
    end)
  end
end
这是不正确的:

object :foo do
  field :phone, non_null(:string),
    resolve: fn foo, _ ->
      {:ok, foo["phone"]}
    end
end