【发布时间】:2021-02-18 06:07:32
【问题描述】:
我是 HotChocolate 和 GraphQL 的新手,我在类型扩展方面遇到了一些困难。
是否可以使用ObjectType 字段扩展类型?我在StringType 的文档中只找到了一个示例:
protected override void Configure(IObjectTypeDescriptor descriptor)
{
descriptor.Name("Person");
descriptor.Field("address")
.Type<StringType>()
.Resolver("Address");
}
我尝试做类似的事情,但我有这个例外HotChocolate.SchemaException: Unable to resolve type reference Output: ObjectType。
protected override void Configure(IObjectTypeDescriptor descriptor)
{
descriptor.Name("Person");
descriptor.Field("address")
.Type<ObjectType>()
.Resolver(ctx => new ObjectType(d => d.Field("street").Type<StringType>().Resolver("Street")));
}
在我的情况下,您能否建议任何使用 ObjectType 字段扩展类型的方法?还是直接回答有没有可能?
谢谢!
【问题讨论】:
-
扩展你make的目的其实并不清楚。您能否提供有关您认为导致该需求的用例的更详细信息?根据您的示例:似乎更自然的方法是定义类型地址及其元数据类型(公共类地址类型:ObjectType {...})。
-
我的实体中的一个字段是用户在运行时配置的 json 对象。所以我无法提前描述一个合适的对象。但我希望能够在 GraphQL 架构中显示此 json 包含的字段。
-
Schema 是在使用之前设置的东西。例如,HotChocolate v.11 在启动时编译模式,所以,我不确定它是否是在运行时更改它的正确方法。以属性名称作为键来呈现 JSON 对象(如字典)可能更合适。
-
其实我在应用启动的时候就知道方案,而且它的整个生命周期都不会改变。所以我认为在 GraphQL 模式中显示它会很有用。
标签: hotchocolate