基于解析属性的 HotChocolate 过滤器集合

问题描述

public class Parent{
  public IEnumerable<Child> Children(Filters filter){
    return new List<Child>() { new Child()};
  }
}

public class Child{
  public string Value(ChildrenFilter filter){
    // Maybe return null,maybe return a string
  }
}

我想根据 Child.Value 是否不同于 null 来过滤 Parent.Children 集合。 例如:.Where(child => // child has Value);

但是对于上面的代码,我似乎无法使用中间件,因为它在调用 Child.Value 之前运行。

在 Child.Value 解析后,是否有一个钩子可以让我应用过滤逻辑?

解决方法

对于我的场景,我设法插入了自定义序列化程序,因此我可以在序列化之前访问响应。

此时,响应对象采用不同的格式,但通过一些自定义逻辑,我能够过滤我需要的内容。

  internal class CustomHttpResultSerializer : DefaultHttpResultSerializer
    {
        public override ValueTask SerializeAsync(IExecutionResult result,Stream stream,CancellationToken cancellationToken)
        {
            var queryResult = result as QueryResult;

            // Remove any unwanted results

            return base.SerializeAsync(result,stream,cancellationToken);
        }
    }

然后在启动时:

 services.AddHttpResultSerializer<CustomHttpResultSerializer>();

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...