我正在构建一个Typescript SDK,用于汇总来自多个不同API和其他数据源的数据,并通过GraphQL接口公开它。我不仅需要将文本或序列化对象从GraphQL客户端传递到解析器,还需要在客户端定义解析器,以便可以通过解析器的上下文对象传递自定义(代理,可观察到)的javascript对象。
我正在将Apollo Client与apollo-link-state
一起使用来调用我的查询解析器,但是,我找不到一个好的模式来让用户过滤他从查询中获取的数据。
我使用apollo-server
构建的GraphQL API的时间使我能够传递一个where
对象,该对象过滤来自解析器的数据,而无需在解析器端编写自定义逻辑来考虑所有问题where
对象的可能值。因此,我通常会这样查询:
getFoo (where: { bar: '3'}) {
bar
}
我是否错误地认为上述查询的apollo-server
解析器是否在没有任何解析器筛选逻辑的情况下进行了where bar = '3'
筛选?是否存在通配符过滤器这样的功能?如果存在,我是否可以在这样的客户端查询中使用它?:
getFoo (where: { bar: '3'}) @client {
bar
}
如果无法实现,是否需要在每个解析器中手动实现此where
对象过滤器?哪个好的模式呢?