【问题标题】:HotChocolate filter collection based on resolved properties基于已解析属性的 HotChocolate 过滤器集合
【发布时间】:2021-02-23 16:00:30
【问题描述】:
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.Value 之前运行。

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

【问题讨论】:

  • 我不太明白。您将Value 声明为方法,但将其用作属性。
  • 在 HotChocolate 框架中,像这样的方法是一个解析器,它会在父级解析后解析。这样我可以将过滤器传递给“属性”,这实际上是一个方法

标签: c# hotchocolate


【解决方案1】:

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

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

  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>();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2019-10-14
    • 2015-03-06
    • 1970-01-01
    相关资源
    最近更新 更多