问题标签 [graphql-dotnet]

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 投票
2 回答
229 浏览

graphql - GraphQL 正在返回额外的信息,这会减慢初始加载速度

我在我的 graphql 结果中得到了一些额外的信息。除了我得到的数据和最终错误

  • 文档
  • 手术
  • 性能
  • 扩展

所以结果变得相当庞大。我注意到的另一个想法是文档和智能感知器的初始加载需要很长时间才能加载。

知道如何摆脱这些额外的数据吗?

graphQL 查询的结果:

graphQL 查询的结果

GraphQL 控制器

0 投票
1 回答
349 浏览

graphql - 如何在 GraphQL .Net GraphType First 中组织多个突变?

在 GraphQL .Net 中,大多数示例代码都有一个顶级突变图对象,其中定义了许多实际突变。
这是 GraphQL .NET突变页面中的一个示例:

当你有 1-5 个突变时,这似乎很好,但在一些较大的项目中,加班可能会导致几十个突变。将它们放在一个大类中似乎就足够了,尽管似乎也缺少一些组织。我尝试将子突变 GraphTypeObject 放入父突变的字段中,但是调用子突变时遇到了一些麻烦。也许我把它配置错了。

这让我想知道,肯定有一个用户有十几个突变,他们可能已经组织了他们的突变,而不是把他们的所有突变放在一个顶级突变对象中。

如何在 GraphQL .Net GraphType First 中组织多个突变?

0 投票
1 回答
38 浏览

graphql-dotnet - 我可以在 GraphQL .NET 中建立连接 NonNullable 吗?

我正在做一个项目,我们需要建立非可选的连接,但我真的找不到任何关于这个主题的东西。我使这些字段与 NonNullableGraphType 一起工作,如下所示,但我没有运气让连接不可为空。我已经进行了广泛搜索,找不到任何关于这个问题的信息,所以我希望有人能在这里帮助我,因为我完全迷路了。不可为空的字段是这样写的:

可悲的是,相同的方法不适用于列表。任何帮助深表感谢!

编辑 我目前解决此问题的尝试如下所示:

0 投票
1 回答
429 浏览

graphql-dotnet - 为什么 GraphQL .Net HttpConext 没有正确的用户会话?

我正在使用GraphQL .net来响应 Asp.net Core 网站后端的 graphql 查询。所有 cookie 似乎都随请求一起传递,但由于某种原因,我的 graphql.net 请求没有在 HttpContext 上设置正确的用户会话。ClaimPrincipal通过graphql.net 大部分是空的,而我的 Asp.net Core WebApi/Mvc 样式端点具有正确的主体和用户 ID,即使 GraphQl.Net 请求和非 graphql.net 请求同时发生。

我检查了有效负载,并且在两个请求中都传递了所有相同的 cookie。所以这让我想知道为什么我的常规 WebApi 端点能够(自动)获得声明主体,为什么 graph.net 端点不能这样做。据我从 GraphQl.net 以前的用法中知道,我不知道必须添加任何特殊的会话代码(除了将用户从 HttpContext 传递到 graphQL.net)。我一直在阅读 GraphQL.Net 和 Asp.net 核心源代码和文档,但到目前为止我还没有发现任何明显的违规或线索。

什么可能导致这样的问题?有哪些常见原因? 我是否应该尝试弄清楚如何手动将 cookie 读取到 Asp.net 核心并提取主体?

也许我错过了一个特殊的标题值?我不认为标头很奇怪,但我还没有对 graphql.net 和 asp.net 核心请求中的标头进行并排比较。

在这个片段中,我首先发现了一个问题。如果我在此处放置断点,则没有为当前用户会话正确设置声明原则。后来当我访问 HttpContext 时,用户会话对于 graphql.net 请求不正确。

这是 Graphql.net 配置的一部分:

如果有人需要,我很乐意提供任何请求的配置,但它涉及到很多可能的代码。谢谢!

0 投票
1 回答
112 浏览

.net-core - GraphQL .Net 订阅 EventStreamFieldType 未订阅 IObserverable

我正在尝试使用 GraphQL .Net 在我的 GraphQL 服务器上设置订阅。我遵循了QraphQL.Net文档和 Roland Guijt 的 PluralSight 课程中的文档,并在网上查找了更多信息。

我所拥有的看起来应该可以工作。我有我的订阅方法,它将 IObserverable 返回到事件流字段。我也尝试过使用函数来传递 IObserverable,但它仍然不起作用。

这是我的订阅

当我跟踪代码并在 GraphQL .Net 包中放置断点时,它会进入 EventStream 订阅者

看起来它应该在我的 IObserverable 中调用 Subscribe 方法,但是没有达到我在此处放置的断点。

我的 Observerable 已在 AutoFac 中注册为 Singleton,并且我的 GraphQL 突变和查询工作,因此看起来 GraphQL 设置正确且工作正常。我的 observable 中的 notify 方法是在将 MyObject 添加到数据库后调用的。

0 投票
1 回答
663 浏览

c# - 如何处理每个资源的多个查询?

我想使用 GraphQL 和 GraphiQL 包创建一个带有 .NET Core 的 GraphQL API。我为用户创建了一个查询,为任务创建了一个

我创建了两个模式来“注册”查询

不幸的是,我发现这是不可能的,因为我必须注册ISchema为单例服务

所以TaskSchema覆盖UserSchema. 一种解决方案是使用一个单一的模式和一个包含的内容的单一查询UserQueryTaskQuery但是事情很快就会变得一团糟,不是吗?

有什么更好的办法来分割资源?

我认为在处理 100 个甚至更多字段时,事情可能会变得非常复杂。

0 投票
2 回答
1142 浏览

c# - 与 System.Text.Json.JsonException 苦苦挣扎的 GraphQL 模型

我创建了一个新的 .NET Core 项目并安装了包 GraphQL、GraphiQL 和 GraphQL.SystemTextJson。

运行应用程序时,这就是我得到的

在此处输入图像描述

除了异常消息 GraphiQL 无法找到架构文档。

首先,我有两个实体,用户和任务。

并且他们都有自己的代表图类型

我创建了包含客户端可以执行的所有“操作”的查询

并为模式注册该查询

在启动文件中,ConfigureServices我添加了此代码以在调用之前注册所有必需的服务services.AddControllers()

Configure我最初调用的方法app.UseGraphiQl()中。

对应的 GraphQL 请求 DTO

最后我实现了 API 控制器

有人知道这里有什么问题吗?我看不到循环依赖等问题。


运行应用程序时,graphQlRequest包含以下值

  • 操作名称:IntrospectionQuery
  • 询问:

.


我现在迁移到 .NET 5 却得到了这个错误

在此处输入图像描述


我添加了一个复制存储库

https://github.com/olaf-svenson/graphql-net-reproduction

0 投票
1 回答
680 浏览

c# - .NET Core 3.0 中的 GraphQL.Net 库出现“INVALID_OPERATION”错误

我对 GraphQL.Net 库有疑问。我使用了 "GraphQL" Version="3.2.0"、"GraphQL.Server.Ui.Playground" Version="4.4.0" 和 TargetFramework = netcoreapp3.0 我想看看它是如何工作的,我创建了一个简单的类:

在操场上开始后,我请求了一个查询:{wheather {myProperty}},我看到:“消息”:“执行文档时出错。”,“代码”:“INVALID_OPERATION”。如果我更改了代码和注释行“Field("wheater", resolve: context => new Temp { MyProperty = 2 });” 我请求查询 {soldata} 并看到正确的结果“5”。谁能告诉我,我的错误在哪里?

0 投票
1 回答
67 浏览

graphql-dotnet - 在 GraphQL dotnet 中手动解析查询优化参数的最佳模式

我们在现有的应用程序数据库之上有一个 GraphQL dotnet 实现。

我们有一个相当交织的数据结构,所以当从我们的一些顶级字段查询时,包括它们的一些子字段,我们可能会加入大量的表。但是,并非每个查询都需要所有这些连接。

我希望能够手动解析 Query ObjectGraphType 中的 context.Arguments,当我解决它以消除未查询特定子字段时的连接时。

一个非常简单的高级版本如下:

如果用户有疑问,我们只加入雇主。然而,问题是雇主可以有部门、雇员、经理等……而那些本身可以有大量的子属性。

目前,我们的查询加入了查询的几乎所有排列,产生了一个非常庞大的 SQL 查询。如果用户只想要组织名称和每个雇主的名称,这将是很多繁重的工作。

在最顶层进行过滤很容易(如上所示),但我不知道如何从那时起进行查询,我似乎最终陷入了儿童的无限循环......例如:

我似乎无法得到一个 where name == "Employees" 或类似的东西。我是否需要在某个时候将 GraphQL.Language.AST.INode 转换为某些东西?当我在调试时检查值时,看起来我应该能够看到我所追求的值。但这不会编译。

调试信息

0 投票
1 回答
243 浏览

c# - graphql-dotnet/graphql-dotnet/ 和 graphql-dotnet/server/ 有什么区别

早上好。

我对这两个存储库(graphql-dotnet/graphql-dotnet/graphql-dotnet/server/)有点困惑。

https://github.com/graphql-dotnet/graphql-dotnet/https://github.com/graphql-dotnet/server

他们都在同一个组织下,并且贡献者有一些重叠,但我对决定使用哪一个有点迷茫。

我想构建一个托管 graphql 端点的 dotnet 5 应用程序。简而言之,这是我的目标。

我注意到 graphql-dotnet/server/存储库内置了一些帮助程序,例如。

这使我的 DI 设置得很好而且很容易。它的对应物 graphql-dotnet/graphql-dotnet/没有。

所以我的问题是“我应该专门使用哪一个?推荐哪一个,次要目标是添加 jwt 身份验证和最后的联合支持。但是这两个远远不够。

我的一位同事继续使用graphql-dotnet/graphql-dotnet/,他的服务器应用程序的配置比文档多得多,graphql-dotnet/server/所以我怎么知道我使用哪一个?

任何人都可以推荐任何突出它们两者之间差异的文档吗?