问题标签 [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.

0 投票
1 回答
377 浏览

graphql - 为什么我的 Absinthe GraphQL 订阅不起作用?

我的架构:

当我做

我收到这个错误TypeError: Failed to fetch

日志:

这是我的其余设置:

用户套接字: use Absinthe.Phoenix.Socket, schema: DrawingApiWeb.Schema.Schema

端点: use Absinthe.Phoenix.Endpoint

路由器:

所有这一切都发生在我对任何上下文进行任何更改之前。无论问题是什么,它都应该在设置中。我已按照 Absinthe-GraphQL 书和 Pragmatic Studio 视频中的确切说明进行操作,并使用https://hexdocs.pm/absinthe/subscriptions.html进行了验证

还是同样的错误。提前谢谢你的帮助。

0 投票
0 回答
397 浏览

sockets - 使用 cookie 授权带有 elixir 和苦艾酒的 graphql 订阅

我正在尝试使用 cookie 使用 elixir 和苦艾酒进行授权/身份验证 graphql 订阅,我使用了以下链接:

https://nts.strzibny.name/graphql-subscriptions-with-elixir-and-absinth/

我正在尝试对用户进行身份验证以订阅正确的主题,但我无权访问订阅连接中的 cookie。为什么?

在我看到以下链接后:

https://hexdocs.pm/absinthe_phoenix/Absinthe.Phoenix.Socket.html

在我的 user_socket.ex 中,我将 user_id 作为查询参数传递,这是可行的,但它根本不安全......我可以传递我想要的 id ??!!

有人能帮我吗?

0 投票
2 回答
763 浏览

websocket - 如何使用 Absinthe (Elixir) 和 Urql 进行 graphql 订阅?

我的想法是使用 react 和 urql 构建一个客户端应用程序,以及使用 elixir 和苦艾酒构建一个 graphql api,但目前看起来它们并不能很好地结合在一起。

除了 Apollo 之外,有没有办法将 Absinthe 订阅实际用于任何其他客户端?我尝试使用 urql,但由于 ws 连接失败,出现以下错误:

WebSocket 连接到“ws://localhost:4000/socket/websocket”失败:WebSocket 握手期间出错:发送非空“Sec-WebSocket-Protocol”标头但未收到响应

到目前为止,我发现的唯一似乎与这个问题有关的是这个库 absinthe/socket-apollo-link (https://github.com/absinthe-graphql/absinthe-socket/tree/master/packages/socket -apollo-link)但它显然只适用于阿波罗。

在我失败的尝试中,我做了以下事情:

这个'subscriptions-transport-ws'我从一个教程中找到,并且在一些gh问题中提到了ws url末尾的神秘'/websocket',但它似乎有效(在将它添加到url末尾之前有根本没有ws连接)。

0 投票
1 回答
1322 浏览

google-chrome - Graphiql (GraphQL UI) 无法在 Chrome 中加载,但在 Firefox 和 Safari 中有效

我不确定 Chrome 发生了什么变化,但 Graphiql GUI 工具没有加载。

在此处输入图像描述

在 Firefox 和 Safari 中它工作得很好。我已禁用所有 Chrome 扩展程序,重新启动 Chrome,并重新启动我的 Mac。错误仍然存​​在。我该如何调试?

在 graphql-workspace.min.js 中出错:

错误:

这是它在 Firefox 中工作的图片: 在此处输入图像描述

不知道为什么headers未定义。

我正在使用:Elixir、Phoenix、Absinthe、Absinth-Plug、Vue、Vue-Apollo、apollo-boost、graphql、

由于 GUI 似乎是从 CDN 加载的,我想知道这是否是我应该探索的方向。但是,chrome 中的网络选项卡没有显示任何故障。

在此处输入图像描述

0 投票
1 回答
405 浏览

graphql - 苦艾酒数据加载器:Absinthe.Resolution.Helpers.dataloader/2 中的匿名 fn/3 中没有函数子句匹配

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

我遇到以下错误:

我的PostType

模式突变:

解析器:

0 投票
1 回答
115 浏览

forms - 如何使用 Phoenix 表单在控制器的苦艾酒 @graphql 突变属性中填充自定义类型?

我已经读完了在 Elixir 中使用 Absinthe (Pragprog) 制作的 Craft GraphQL APIs,我正在尝试扩展 item_controller.ex 以允许“菜单项”编辑。

我在控制器中做了这些功能:

这是我的edit.html.eex:

这是我的 form.html.eex:

但是当我提交表单时出现错误。这是错误:

对于我,这说得通。例如,我可以将 form.html.eex 中任何输入元素的 name 属性更改为“input”,然后我会得到一个不同的错误:

再说一次,这对我来说很有意义。$input 参数不是 MenuItemInput 变量。

所以我希望通过两种可能的方式来解决这个问题:

  1. 在 form.html.eex 中,我创建了一个“表单中的表单”,以便它有一个“输入”字段,而该字段又包含多个字段。也许是“输入组”?

  2. 在 item_controller 中,我将变量传递给 @graphql 模块属性。我根本不知道该怎么做。我尝试了很多奇怪的语法,因为我什至找不到内联变量的 SDL 示例。

非常欢迎任何建议/批评/想法。我确信其他人已经这样做了,因为在完成这本书之后尝试似乎是一件很自然的事情。

0 投票
1 回答
413 浏览

elixir - 使用数据加载器批量加载苦艾酒中的字段

我的 Absinthe graphql 模式中有一个对象,如下所示:

我正在使用一个解析器,vote_count它使用 parent 执行 ecto 查询match。但是,如果查询匹配列表,这将遇到 n+1 查询问题。它目前看起来像这样:

我已经在使用dataloader来批量加载子实体,但是在使用Absinthe 提供的函数时,我似乎无法让自定义run_batch函数工作。Absinthe.Resolution.Helpers.dataloader

使用 dataloader/ecto 实现自定义批量查询的推荐方法是什么?有人可以举个例子,包括架构定义部分吗?

0 投票
1 回答
122 浏览

graphql - 有效地解决elixir数据加载器中的belongs_to关系?

是否可以使用 elixir 数据加载器belongs_to有效地查询关系?似乎load正在查询它需要的所有项目,但是get无论它实际需要哪个项目,它都会返回已加载项目的第一个值。这是我现在使用的代码:

我目前的工作是使用以下代码,但它使代码更加丑陋且与 Ecto 模式不友好,因为我需要在此处显式指定父模式的节点模式和 node_id 字段,而不是让数据加载器从现有的外模式:

0 投票
1 回答
364 浏览

elixir - Absinthe 无法序列化嵌套地图,但它能够序列化顶级地图

我正在尝试解决以下问题(这是我的解析器函数的返回值,我将它传递给resolve宏):

这将返回这个经典错误:

我得到了,它不知道如何将地图转换为字符串,但这导致了我的实际问题:

我想知道为什么可以很好地解析顶级errors地图,但不能很好地解析嵌套messages地图,希望得到一些指导,谢谢!

注意:我们的模式是让 Ecto 样式验证错误在我们自己的数据下返回,而不是顶级 Graph 查询错误,因此使用 :ok 元组而不是解析 :error 元组

0 投票
2 回答
610 浏览

graphql - Absinthe - 如何将_session 放入解析器函数中?

我正在使用苦艾酒并且有一个突变的迹象。当用户通过有效凭据发送时,我想通过在响应中设置会话 cookie put_session

我面临的问题是我无法conn从解析器函数中访问。这告诉我,我不应该从解析器中更新连接的属性。

用苦艾酒可以做到这一点吗?有哪些替代解决方案?