首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用HotChocolate查询组织结构

用HotChocolate查询组织结构
EN

Stack Overflow用户
提问于 2021-03-29 00:43:47
回答 2查看 131关注 0票数 0

我正在尝试以这种方式组织我的查询

代码语言:javascript
复制
public class RootQueryType : ObjectType
    {
        protected override void Configure(IObjectTypeDescriptor descriptor)
        {
            descriptor.Include<UserQuery>().Name("userQuery");

            descriptor.Include<MessageQuery>().Name("messageQuery");
        }
    }

但在我的牛郎星游乐场上,我得到了这样的结果:

虽然没有userQuery,但我仍然可以从其中查询字段。我认为这不是Include应该工作的方式,我正在寻找一种分离messageQuery和userQuery的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-29 02:38:25

Include将包含类型的所有字段合并到当前类型中。Name是指当前类型的名称。为了在您的类型中获得另一个级别,只需创建一个返回新类型的字段。

你知道吗,你不需要这些类型描述符,而是可以用纯C#来表达所有的东西。

代码语言:javascript
复制
public class Query 
{
    public UserQuery GetUsers() => new UserQuery();
}

public class UserQuery 
{
    ...
}

这将导致:

代码语言:javascript
复制
type Query {
  users: UserQuery
}

type UserQuery {
  # ...
}
票数 3
EN

Stack Overflow用户

发布于 2021-03-29 02:45:25

Include返回IObjectTypeDescriptor,所以您要做的就是设置RootQueryType的名称

如果我理解正确的话,您希望能够像这样查询:

代码语言:javascript
复制
{
    userQuery {
      userName
    }
    messageQuery {
      message
    }
}
代码语言:javascript
复制
public class RootQueryType : ObjectType
    {
        protected override void Configure(IObjectTypeDescriptor descriptor)
        {
            descriptor.Field("userQuery").Resolve(new UserQuery())
            descriptor.Field("messageQuery").Resolve(new MessageQuery())
        }
    }

如果您想要实际组合这些类型,并能够创建如下查询:

代码语言:javascript
复制
{ 
    userName  
    message 
}

您可以使用ObjectTypeExtensions

代码语言:javascript
复制
[ExtendObjectType("Query")]
public class UserQuery {
    public string GetUserName() => ...
  
}
[ExtendObjectType("Query")]
public class MessageQuery {
    public string Message() => ...
  
}

然后您可以执行以下操作

代码语言:javascript
复制
services.AddGraphQLServer()
   .AddQueryType(x => x.Name("Query"))
   .AddTypeExtension<UserQuery>()
   .AddTypeExtension<MessageQuery>()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66843777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档