为什么graphql-dotnet会为此模式返回“预期非空值”错误?

时间:2018-12-14 05:13:08

标签: c# graphql graphql-dotnet

我有一个要查询的简单架构,如下所示:

t2

但是“ graphiql”抛出以下错误,甚至没有运行我的查询。

{
  subQuery {
    subObjectGraph {
      Name
    }
  }
}

我的架构有什么问题(如下)?我正在新建一个SubObject,所以我不明白为什么错误消息表示该值为空。

{
  "errors": [
    {
      "message": "Expected non-null value, resolve delegate return null for \"$Api.Schema.Queries.MySubObjectGraphType\"",
      "extensions": {
        "code": "INVALID_OPERATION"
      }
    }
  ]
}

如果我将MySubObjectGraphType替换为StringGraphType,则代码可以正常工作,因此问题必须出在MySubObjectGraphType的配置上。

请帮助?我正在使用v2.4。

2 个答案:

答案 0 :(得分:6)

您需要在MySubObjectGraphType中为Startup.cs添加服务注册

因此,该规则可以描述为“源自ObjectGraphType的自定义类型必须在某个时候通过依赖注入进行注册”

例如在Startup.cs中:

services.AddSingleton<MySubObjectGraphType>();

答案 1 :(得分:0)

您要在RootQuery的subQuery中返回GraphType。解析程序应仅返回DTO,而不能返回GraphType。

如果您尝试组织查询,则只需返回一个空对象。

Field<MySubQuery>(
  name: "subQuery",
  resolve: ctx => new {});

https://graphql-dotnet.github.io/docs/getting-started/query-organization