苦艾酒数据加载器:在Absinthe.Resolution.Helpers.dataloader/2中的匿名fn/3中没



苦艾酒和Dataloader之间的集成对我来说是相当新的,所以欢迎任何帮助。

我遇到了以下错误:

** (FunctionClauseError) no function clause matching in anonymous fn/3 in Absinthe.Resolution.Helpers.dataloader/2

我的PostType

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

架构突变:

@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

解析 器:

def create_post(_, %{input: input}, %{context: %{current_user: current_user}}) do
Map.merge(input, %{user_id: current_user.id})
|> Blog.create_post()
end

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

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

accounts.ex里面,你应该有这个:

def data() do
Dataloader.Ecto.new(Repo)
end

然后将帖子类型中的用户字段更改为使用此字段:

field :user, :user_type, resolve: dataloader(User)

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

最新更新