如何在Hot Chocolate中为char类型字段配置过滤功能?
解决Hot Chocolate中char类型字段过滤的问题
保留你已有的两项配置:
- 绑定char类型到GraphQL的StringType:
builder.BindRuntimeType<char, StringType>() - 添加char转string的类型转换器:
builder.AddTypeConverter<char, string>(c => c.ToString())
(如果要支持修改操作(Mutation),确实得补一个反向转换器:builder.AddTypeConverter<string, char>(s => s.FirstOrDefault()),空字符串的处理逻辑可以按需调整)
- 绑定char类型到GraphQL的StringType:
关键新增配置:给过滤系统指定char类型对应的过滤输入类型
builder.AddFiltering(options => { // 让过滤系统用字符串的过滤规则来处理char类型字段 options.BindRuntimeType<char, StringOperationFilterInputType>(); });
这么改完,[UseFiltering]就能正常识别Status字段的类型,生成对应的过滤输入项,同时通过已有的类型转换器自动完成string和char的转换,实现过滤功能。
原因很简单:之前只给Schema输出层配置了char的类型映射,但过滤系统不知道该怎么处理char类型的输入条件,所以报错类型未知。绑定char到StringOperationFilterInputType后,过滤系统会生成字符串相关的过滤规则(比如等于、包含、范围等),再配合类型转换器完成数据的双向转换。
内容的提问来源于stack exchange,提问作者Bennett McElwee
相关产品推荐
相关产品推荐

