问题标签 [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.
ecto - 如何设置字段名称与基础 Ecto 字段名称不同的 Absinthe 架构?
例如,我想在以下 Absinthe 模式中调用前端的inserted_on
时间戳:created_at
但我不确定如何设置 Ecto <-> Absinthe 映射。我应该在我的 Ecto 架构中添加一个虚拟字段吗?
elixir - 如何使用 Elixir 和 GraphQL 从数据库中删除照片
我一直在关注 EQuimper 制作的 Instagram 克隆教程。我一直在尝试通过后端进一步扩展应用程序,因为目前前端并不重要。我正在尝试实现删除照片功能,但它似乎不起作用,我不知道为什么。
我的 schema.ex 在突变部分下包含此代码。
这是 resolver.posts 文件中的代码,用于返回列表或单张照片。
这是执行突变以从数据库中删除照片的代码,它接收照片结构并将其删除。
这是定义照片模式的代码。
@doc false def changeset(%Photo{} = photo, attrs) 做照片 |> cast(attrs, [:image_url, :caption]) |> validate_required([:image_url]) 结束
此代码位于处理架构的 photo.ex 文件中(我认为)
这是我运行以从数据库中删除查询的突变。它返回一个错误说
从终端返回。我做错了什么?以及我对本示例中的功能流程有什么不了解的地方。视频系列链接:https ://www.youtube.com/watch?v=AVQQF_J3Az0&list=PLzQWIQOqeUSOu74jGJMRH06gneM3wL82Z进一步说明。
elixir - 如何在 Elixir/Phoenix 控制器中运行 GraphQL 查询而不删除生成的 CRUD 网页?
我在 Elixir 中创建了一个 Phoenix 应用程序。我使用生成工具来创建所有的 crud 功能和 crud 页面。
它目前使用:
如何用 GraphQL 实现替换它,因为我目前能够通过指定的 url 传递 GraphQL 查询,例如。从表中获取所有记录。该文档讨论了使用 absinthe_phoenix 插件并将其添加到您的管道中。这最终只是替换了我拥有的当前网页并要求提供一个 url,所有当前页面都是 Phoenix 在运行脚手架命令以生成 crud 和数据库模式时创建的页面。
我需要保留所有这些杂乱无章的页面,但让它们运行 GrapQL 查询。所以在显示数据库中所有记录的页面上,我需要它而不是运行
它应该运行
获取所有数据。如何在控制器中运行 GraphQL 查询?
这是我需要在我的 GraphQL 模式中运行的查询
elixir - 如何告诉苦艾酒它应该发出查询以发送未完成订阅的更新?
我正在运行查询后端的 Absinthe GraphQL 服务器,但也有来自外部的事件(通过 AMQP),表明发生了更新(其中一些不包括更新的记录信息)。
我可以处理包含新记录的事件Absinthe.Subscription.publish
。
但是如何处理更新记录不存在的情况呢?
换句话说,我想触发 Absinthe 发出查询,并将结果作为现有订阅的结果发送到 GraphQL 客户端。
elixir - Elixir, Absinthe 如何在与苦艾酒约会后创建用户?
我正在尝试获取在某个日期之前/之后创建的用户,但我收到了这个错误。
"message": "参数 \"filter\" 具有无效值 $filter。\n在字段 \"insertedAfter\" 中:预期类型 \"NaiveDateTime\",找到 \"2018-05-13\"。",
该错误是有道理的,因为“2018-05-13”不是 NativeDateTime ......但是,我认为 NativeDateTime 应该解析字符串“2018-05-13”。我正在尝试应用我从书中学到的东西,但很难。我还创建了一个自定义日期标量,但我基本上遇到了同样的错误。
我怎样才能用凤凰和苦艾酒搜索在某个日期之后创建的用户?
Ecto 架构,帐户 > user.ex
类型.ex
苦艾架构 schema.ex
users_resolver.ex
帐户.ex
mix.exs
elixir - Elixir:使用 Absinthe 查询图形数据库 Dgraph。GraphQL 到 GraphQL+ 的映射
我正在使用苦艾酒来构建 GraphQL API。数据存储是Dgraph,它使用 GraphQL+ 作为查询语言。它与 GraphQL 类似,但并不完全相同。
从理论上讲,这会让我处于一个美妙的境地。类似的 GraphQL 查询
也可能只是 Dgraph 中的一个查询。它看起来几乎相同:
图形数据库一次性加载复杂关系的能力是我想使用的。问题只是:在苦艾酒中,模式应该是可组合的。在模式中将有一个:user
对象,该对象的:posts
字段为list_of(:post
)。然后是一个:post
对象。等等。
为了帮助防止 N+1 查询,您将使用数据加载器或批量加载。
现在我可以一口气加载所有内容。例如,我可以编写一个解析器来做到这一点:
以及实际查询数据库的用户上下文
这里的问题是我过度获取。我总是查询所有内容,即使我只想要一个用户列表。这可行,但在性能方面不是很好。我失去了可组合性。
如果我可以访问解析器中的查询以了解请求了哪些字段,那么解决方案是什么。然后我可以使用模式匹配来构建查询,然后将其发送到 Dgraph。我什至可以拥有一个中央解析器和许多查询构建器。但我需要挂钩查询并直接解析它。
这样的事情可能吗?知道在哪里可以找到有趣的东西来解决这个问题吗?也许用苦艾酒中间件?
谢谢!
elixir - 长生不老药苦艾酒自定义标量:日期时间导入错误
我创建了这么多架构,但是当我尝试:datetime
从苦艾酒中导入自定义标量类型时。然后它给了我这样的错误
我也进口了import_types(Absinthe.Type.Custom)
graphql - Authorization for subscriptions Graphql (Absinthe) with token
I'm trying to add authentication to this subscription test, since I keep getting Not Authorized
when I run mix test
.
I've seen that you need to add a login mutation to the push_doc
function but I was wondering. Is there any way to use only the token to authenticate, just like regular mutations that use :
This is my current subscription test:
My general question is. Can I only pass the token
(which I have hardcoded) into a function to authenticate for subscriptions?
amazon-web-services - 使用预签名 URL 将图像推送到存储桶时,AWS S3 签名不匹配错误
在具有 Elixir/Phoenix 后端的 React Native 应用程序中,我试图让用户创建一张照片,该照片将使用 AWS 预签名 URL 推送到 S3 存储桶。我正在使用 Hex 包 ex_aws 来公开 API。虽然我对 Elixir 比较陌生,但我遵循了文档,并且代码生成了上传 url,没有任何问题。
配置:
生成上传URL的函数:
并作为对象添加到类型中:
我正在使用用 Absinthe 实现的 GraphQL,我已添加到解析器中,如下所示:
这是生成的上传 URL:
这些也是构成 ex_awspackage 的服务:
我创建了一个附加了 AmazonS3FullAccess 策略的 IAM 用户。我还尝试使用具有完全管理权限且 S3 存储桶完全公开的 IAM 用户发送图像。我尝试过使用和不使用 UUID,并尝试在查询参数中删除内容类型。密钥和访问密钥导出到 .env 文件中,我检查了它们是否与 AWS 匹配,并检查了是否存在任何空白错误。我确保了 .env 文件的来源。我还尝试将密钥直接添加到 Postman 中的授权类型中。最后,我两次删除并重新创建了 IAM 用户和 S3 存储桶,但均无济于事。使用指定的 Put 方法,这是返回:
我相信AWS方面一定存在权限问题,我根本没有看到,但是我已经浏览了文档,但我找不到任何东西,第二天继续使用这个,非常感谢任何帮助。