2

我首先在 Hot Chocolate 中使用纯代码,但我有 dateTime C# 类型,并且在 javascript 中时区转换不正确时遇到问题。所以我希望它输出一个 Date 而不是 DateTime 对象。现在我正在使用

 SchemaBuilder.New()
 .BindClrType<DateTime, DateType>()

但这是一种非常暴力的方法,因为现在我永远无法在 graphQL 中输出 DateTime 类型。

有没有办法在属性上放置一个属性或在某个地方设置它,以便类上的特定属性输出为日期而不是日期时间?

4

2 回答 2

2

您还可以通过将目标字段与GraphQLType属性归因来使用纯代码优先方法:

using HotChocolate;

public class User
{
    public int Id { get; set; }

    [GraphQLType(typeof(NonNullType<DateType>))]
    public DateTime BirthDate { get; set; }
}
于 2020-06-23T12:08:07.890 回答
1

是的,有一种非常简单的方法可以实现这一目标。假设您有一些 User 类:

public class User
{
    public int Id { get; set; }

    public DateTime BirthDate { get; set; }
}

为了能够指定 BirthDate 只是一个日期而不是日期时间,请定义用户“类型元数据”并将 BirthDate 的 GraphQL 类型指定为“DateType”:

public class UserType : ObjectType<User>
{
    protected override void Configure(IObjectTypeDescriptor<User> descriptor)
    {
        descriptor.Field(t => t.BirthDate).Type<DateType>();
    }
}

并在架构构建中注册该类型:

public void ConfigureServices(IServiceCollection services)
{
        services.AddGraphQL(sp =>
            SchemaBuilder.New()         
                .AddQueryType<Query>()
                .AddType<UserType>()
                .Create());
}
于 2020-06-15T17:13:11.003 回答