HotChocolate 没有正确映射模型以输入

Posted

技术标签:

【中文标题】HotChocolate 没有正确映射模型以输入【英文标题】:HotChocolate not mapping models properly to type 【发布时间】:2021-10-03 06:08:52 【问题描述】:

Hotchocolate 似乎没有正确映射我的一个模型。 我有这个产品搜索模型:

public class ProductSearchResponseModel : ISearchResult<SimpleProductViewModel>

    public string Identifier  get; set; 
    public Dictionary<string, List<FacetModel>> Facets  get; set; 
    public bool HasMoreResults  get; set; 
    public long Total  get; set; 
    public List<SimpleProductViewModel> Items  get; set; 

如您所见,它有一个 FacetModel,如下所示:

public class FacetModel

    public object Value  get; set; 
    public object From  get; set; 
    public object To  get; set; 
    public long? Count  get; set; 

由于某种原因,hotchololate 没有正确映射:

我创建了一个类型并像这样注册它:

public class FacetType: ObjectType<FacetModel>



public static void AddGraphQLServices(this IServiceCollection services)

    services
        .AddGraphQLServer()
        .AddType<FacetType>()
        .AddQueryType<Query>();

但是如果我查看文档,它看起来像这样:

有人知道这是怎么回事吗?

【问题讨论】:

【参考方案1】:

这是因为您的属性类型是object。 Hot Chocolate 不知道如何处理object,因为GraphQL 中没有object 的概念。 有对象类型,是的,但它有一组已知的字段,object 没有 - 它可以是任何东西。

话虽如此,热巧克力中有一个AnyType。您可以将对象注释为 AnyType,然后在解析器中检索实际值。

public class FacetModel

    [GraphQLType(typeof(AnyType))]
    public object Value  get; set; 

AnyType 仅适用于标量(字符串、整数、...)和 IDictionary。如果这些对象需要支持不同的对象类型,我建议使用联合。

Learn more about the AnyType

Learn more about unions

【讨论】:

以上是关于HotChocolate 没有正确映射模型以输入的主要内容,如果未能解决你的问题,请参考以下文章

django简介

hotChocolate 中有没有办法记录在 IQueryable 上执行的查询

数据挖掘都有哪些模型?

基于 GUID 的 HotChocolate GraphQL 过滤

Backbone.js - 正确的模型初始化

如何将 HotChocolate 中的模式打印为 GraphQL SDL