问题标签 [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 回答
387 浏览

graphql - 如何在没有扩展的情况下请求 graphql 查询?

嗨,我想从服务器请求 graphql 查询。但它总是返回一堆登录扩展字段。我的问题是如何修改下面的 graphql 查询以丢弃扩展名。这是我的 graphql 查询:

这是回应:

正如您在上面的响应中看到的,有很多我不想在我的 graphql 请求中存在的扩展。我的问题是,我怎样才能检索结果只包含我只需要没有扩展的响应?

0 投票
1 回答
960 浏览

graphql - 如何使用 Absinthe Dataloader 处理多对多关系

在我的 phoenix 应用程序中,我在 Artist 和使用连接表实现的 Cause 模式之间存在多对多关系artists_causes。在我的 Artist 模式中,我有many_to_many :causes, Cause, join_through: "artists_causes",在我的 Cause 模式中,many_to_many :artists, Artist, join_through: "artists_causes" 我使用苦艾酒作为 graphql,在我的CauseTypes模块中,我实现了一个cause对象,如下所示

据我了解,使用 Absinthe Dataloader,dataloader/1 是加载艺术家列表所需的。artists: #Ecto.Association.NotLoaded<association :artists is not loaded>但是,当我在 graphiql 中运行以下查询时,我无法从出现错误的原因中查询艺术家

在处理多对多的关系时,我是否缺少任何一点点?

==========

更新

我更新了我的 list_causes 函数如下

并且,我现在收到FunctionClauseError at POST /graphiql\n\nException:\n\n ** (FunctionClauseError) no function clause matching in anonymous fn/3 in Absinthe.Resolution.Helpers.dataloader/1可能指向该Absinthe.Resolution.Helpers.dataloader/1方法的错误。我有导入的助手还有什么我可能会丢失的吗?

0 投票
2 回答
54 浏览

phoenix-framework - 为什么我的注册突变不适用于角色字段?

为什么我的注册突变不适用于角色字段?

我编写了以下代码,但无法弄清楚为什么我的角色枚举不适用于我的突变。

我将我的代码上传到 github Github code

注册突变有效

但是当我尝试登录突变时,它失败了

我得到这个错误::

0 投票
1 回答
882 浏览

elixir - Elixir + Absinthe + Ecto + Dataloader – 按多个字段过滤

使用 Elixir/Absinthe/Ecto/Dataloader,如何通过多个字段查询/过滤源?

例子:

假设您要过滤User由两个字段命名的架构(和数据加载器源),一个命名is_admin(仅true值),一个group_id可以是列表中的任何值,例如[1, 5, 9]

使用Dataloader看起来如何?

这是来自架构定义:

这是数据源模块:

0 投票
2 回答
745 浏览

graphql - 我没有 GraphQL。不预加载如何解决N+1问题?

一个社区有很多家。每个家都归一个人所有。

假设我有这个 graphql 查询:

我可以预加载所有者,这将使数据请求成为单个 SQL 查询。美好的。

但是如果我不在graphql查询中请求所有者,数据仍然会被预加载。

如果我不预加载,数据要么在每个查询中获取,要么根本不获取,因为我没有在解析器中加载 belongs_to 关联。

我不确定这是否是一个已解决的问题,或者只是一个在使用 graphql 时必须接受的痛点。

顺便使用 Absinthe、DataLoader 和 Elixir。

0 投票
1 回答
774 浏览

reactjs - 允许通过 GraphQL 为 Elixir 后端上传多部分(图像)

我希望能更清楚地了解我可能出错的地方。对不起,如果我问了很多问题,因为我感到有点失落并且在这个问题上被困了大约一周。

目前,我已经更改了用于与 apollo-client 链接的包。以前的包是apollo-link-http现在我正在使用apollo-absinthe-upload-link,因为我读过它允许图像上传。

如下所示

将信息发送到后端没有任何变化,但在上传图像方面我确实继续迷失方向。此图像的目的是上传到云端,然后将 url 信息与产品详细信息一起保存。

我正在使用一个钩子const [ images, setImages ] = useState([]);和一个输入<input type="file" placeholder="Upload Image" onChange={handleUploadImage} />

onChange 函数的目的是将图像信息设置为 images 属性。当我们将突变发送到后端时,它的完成方式如下

当它运行时,在我的控制台中我得到一个错误,Uncaught (in promise) Error: GraphQL error: Argument "fileData" has invalid value $fileData.我在后端看到键fileData有一个空对象作为它的值。我希望就可能出现的问题或我应该考虑的问题获得一些建议。如果有人提到 CURL,请解释一下,因为我不知道这对于 GraphQL 和发送突变意味着什么。感谢您对此事的帮助。

PS - 正在使用的突变调用是

更新 - 网络退货请求

后端架构

0 投票
1 回答
54 浏览

graphql - 苦艾酒 - 响应格式 %{data: %{id: 1, name: "Bob"}} vs %{data: %{createUser: %{id: 1, name: "Bob"}}}

格式化响应的正确方法是什么,我将如何处理?

在我在网上看到的示例中,响应数据永远不会嵌套在具有突变名称的键中

这是请求

以下哪个是 GraphQL 的正确响应格式?

这就是我现在的样子。

这是我在网上的一些例子中看到的(我认为它看起来更干净)

其中哪一个是更惯用的 GraphQL?如果是第二个,有没有办法让苦艾酒以这种方式格式化响应?

0 投票
1 回答
4703 浏览

react-native - [网络错误]:TypeError:网络请求失败

我第一次尝试阿波罗。我的后端服务器是 Phoenix 框架(elixir)。并在http://localhost:4000/api中运行 所以我尝试在我的代码中使用这样的 apollo 进行第一次查询。

但我得到了一个错误。

在我的服务器日志中什么也没说。我认为我的客户甚至没有接触服务器。我错过了什么?有任何想法吗?:(

0 投票
1 回答
497 浏览

graphql - 拨号器(通过 Dialyxir)从 Absinthe (GraphQL) 路由的 `forward` 命令发出有关“但此值不匹配”的警告。如何解决?

我收到一个关于不匹配返回的透析器错误,我不确定如何正确解决。

我的mix.exs样子是这样的:

我的router.ex样子是这样的:

我已经尝试过这个_ =技巧,但它似乎不起作用。我认为使用无与伦比的回报可能会有所帮助,但在这种情况下可能不会。我已阅读此页面(https://github.com/jeremyjh/dialyxir/wiki/Phoenix-Dialyxir-Quickstart),但我认为它无助于解决此问题。

任何反馈或方向将不胜感激。

谢谢

0 投票
1 回答
516 浏览

graphql - 用苦艾酒在 GraphQL 中表示 Elixir/Ecto 关联

我已经为我的几个模型添加了多对多关联,并且它似乎在隔离时工作得很好——这意味着没有 GraphQL 模式声明。这是我的一个模型的代码:

这是 GraphQL 类型声明:

这是 Absinthe/GraphQL 部分的顶级架构定义:

请注意,卡片字段在类型中被注释掉。在这种情况下一切正常,但是,如果我取消注释该卡字段,我会收到以下错误:

我已经非常积极地用谷歌搜索了这个问题,但找不到任何东西。目前还不清楚该assoc功能甚至存在于何处——它是一个 ecto 的东西吗?还是苦艾酒?我还在某处找到了示例代码,dataloader但我根本无法让它工作。

我感谢你们所有人的任何想法和想法!谢谢