问题标签 [absinthe]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
graphql - 我怎样才能让苦艾酒和 Dataloader 一起工作?
我有一个 GraphQL api,使用传统的解析函数可以很好地工作。我的目标是消除 N+1 问题。
为此,我决定使用 Dataloader。我已经完成了这些步骤,据说可以让应用程序运行:
- 我将这两个函数添加到我的上下文模块中:
- 我添加了 Schema 模块
context/1
并plugins/0
更新了查询的解析器:
官方教程中没有给出其他步骤。我的:person
对象如下所示:
注释部分是在没有数据加载器的情况下工作且不会导致问题的解析器。
当我尝试查询时:
我明白了:
我不完全理解错误消息,因为我确实将一个模块传递给了dataloader/1
并且我找不到解决方案。可能是什么情况?
elixir - 无法在批次 Absinthe Dataloader 中找到项目
在将苦艾酒从 1.4.12 升级到 1.5.2,将 ecto 从 2.1 升级到 3.0 并将数据加载器从 1.0.2 升级到 1.0.7 之后,我遇到了一些数据加载器无法批量查找项目的问题。我尝试按照 deepankar-j 在https://github.com/absinthe-graphql/absinthe/issues/746上指出的步骤来查看是否有相关内容并到达修复 use_parent: false 作为默认问题的 PR (https://github.com/absinthe-graphql/absinthe/pull/891)但无法解决我的问题。
我完全按照文档应用数据加载器来避免 N+1。
一些进一步的细节:当我在我的应用程序中查询特定字段时,批处理“中断”。这就是我应用数据加载器并使用结果进行排序的方式。查询该字段时:
像这样实现:
但是当我删除该字段查询时,它可以工作。我不确定我是否提供了足够的详细信息,或者是否可以通过某种方式仅提供帮助,但我非常感谢一些帮助或一些可能发生的事情的线索。
elixir - 我如何知道 Phoenix 和 Absinthe 在进程生成和消息发送方面正在做什么?
我有一个 Elixir Umbrella 应用程序,带有 Phoenix、Absinthe (graphQL)。在AppWeb
,我的AppWeb.Router
路线请求,处理/graphql
和Absinthe.Plug
使用MyApp.Schema
。
在其中AppWeb.Schema
,我使用import_types
. 我将Users
用作示例。
Users.Schema
有对象和字段,最终将在哪里resolve &Resolvers.resolve_x/2
我知道 Phoenix 正在对每个请求启动一个新进程,hexdocsAbsinthe.Schema
状态在 Absinthe 1.5 模式中是使用执行查询的相同进程构建的。这是否意味着由 phoenix 请求创建的每个新进程都与单个模式( AppWeb.Schema
) 进程通信?如果是这样,那不会造成瓶颈吗?如果不是,那不是有很多代码(所有 OTP 应用程序中的所有解析器和相关函数)都要转移到每次产生的新模式进程中吗?
graphql - 苦艾酒联合类型解析器为对象字段解析器提供空映射
我正在尝试在苦艾酒中实现 GraphQL 联合类型。
我们有两个对象:foo
和一个解析为其中一种:bar
类型的联合类型。:info
出于某种原因,每个自定义解析器都接收一个空映射%{}
作为其第一个参数。
在解析类型时,我们确实有一个带有"info"
字段(以及更多字段)的映射。
为什么自定义解析器没有收到与联合类型解析器相同的映射?
elixir - Elixir 苦艾酒仪器
我正在寻找我的苦艾酒/凤凰服务器。我想知道使用 Jason 将数据编码为 json 需要多长时间。
我的endpoint.ex
文件如下所示:
我的router.ex
样子如下:
如何检测应用程序的 json_decoder 部分以找出从响应数据中生成 json 需要多长时间?也许使用遥测?
谢谢
apollo - Apollo 客户端和苦艾酒 - 难以解析错误
我在我的 React 应用程序中使用 @apollo/client 和 @absinthe/socket-apollo-link NPM 包,但是在解析和钩子onError
的实现中收到的查询和突变错误时遇到了一些麻烦。useQuery
useMutation
例如,这是我在组件中设置查询的方式:
调用该onError
处理程序时,返回的错误对象记录为:
我可以将此响应分解为各个部分"graphQLErrors"
, "networkError"
, "message"
, "extraInfo"
,但我发现很难在那里获得任何有用的信息。特别是,我希望能够从中得到一些东西message
- 但在这种情况下,error.message
是字符串,
typeof error.message
记录string
所以是的,我对此无能为力。
也许我可以在其他属性之一下找到有用的东西?不,graphQLErrors
是一个空数组,networkError
产生的输出与我在上面记录初始错误时得到的输出相同,并且extraInfo
未定义。
我深入研究了源代码并找到了方法createRequestError
- 当我在此处添加调试日志以查看是什么message
时,我提供了一些好的数据 - 我可以看到我认为在错误响应中某处可用的消息:
什么可能导致此问题?我需要在 Apollo/Absinthe 初始化中配置什么吗?我已经这样设置了:
apollo-client.js
absinthe-socket-apollo-link.js
非常感谢您的任何见解!
graphql - Absinthe 返回一个包含一个空值的数组,而不是一个空数组
我对苦艾酒的这种行为感到困惑。
对于顶级字段,例如
如果ProjectResolver.list_projects/2
返回{:ok, []}
,则 JSON 结果将正确为
但是,对于一个子字段,tags
例如
如果TaskResolver.list_tags/3
返回{:ok, []}
,我得到
代替
我认为这应该是合理的回应。
现在,包含一个项目null
(如果返回的数据首先是一个空数组,那将是理想的,我不明白为什么不是。
graphql - Elixir Absinthe GraphQL,联合 resolve_type list_of/1
我需要帮助。我正在寻找一种方法来解决联合中的 list_of(:object) 。这就是我所做的。
...
在上面的代码中。我试图将 list_of(:person) 放入 resolve_type 并返回这样的错误
然后我尝试了这个
...
它返回
我也试过把它放在这样的类型中,但也有错误。
有没有可能的解决方法?