首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Absinthe dataloader:在Absinthe.Resolution.Helpers.dataloader/2的匿名fn/3中没有匹配的function子句

Absinthe dataloader:在Absinthe.Resolution.Helpers.dataloader/2的匿名fn/3中没有匹配的function子句
EN

Stack Overflow用户
提问于 2020-07-06 04:38:35
回答 1查看 365关注 0票数 0

Absinthe和Dataloader之间的集成对我来说是非常新的,所以欢迎任何帮助。

我遇到了以下错误:

代码语言:javascript
复制
** (FunctionClauseError) no function clause matching in anonymous fn/3 in Absinthe.Resolution.Helpers.dataloader/2

我的PostType

代码语言:javascript
复制
defmodule MyApp.Schema.Types.PostType do
  use Absinthe.Schema.Notation
  import Absinthe.Resolution.Helpers, only: [dataloader: 1]

  object :post_type do
    field(:id, :id)
    field(:title, :string)
    field(:body, :string)
    field(:published, :boolean)
    field :user, :user_type, resolve: dataloader(:user)
  end

  input_object :post_input_type do
    field(:title, non_null(:string))
    field(:body, non_null(:string))
    field(:published, non_null(:boolean))
  end
end

架构突变:

代码语言:javascript
复制
@desc "Create a post"
    field :create_post, type: :post_type do
      arg(:input, non_null(:post_input_type))
      middleware(Authorize, :any)
      resolve(&Resolvers.PostResolver.create_post/3)
    end

解析器:

代码语言:javascript
复制
def create_post(_, %{input: input}, %{context: %{current_user: current_user}}) do
    Map.merge(input, %{user_id: current_user.id})
    |> Blog.create_post()
  end
EN

回答 1

Stack Overflow用户

发布于 2020-07-15 20:07:07

dataloader帮助器的第一个参数应该是模块,而不是原子。

为了说明起见,我假设您的User模块是在MyApp.Accounts.User中定义的,并且您有一个名为accounts.ex的文件。

accounts.ex中,您应该拥有以下内容:

代码语言:javascript
复制
  def data() do
    Dataloader.Ecto.new(Repo)
  end

然后更改帖子类型中的用户字段,以使用以下内容:

代码语言:javascript
复制
field :user, :user_type, resolve: dataloader(User)

如果它仍然不起作用,我可以提供更多帮助。我目前正在尝试使用Absinthe构建一个应用程序,所以它在我的脑海中还很新鲜。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62746082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档