在GraphQL中重用一组参数

在GraphQL中重用一组参数,graphql,Graphql,我有一组通用过滤器,它们是GraphQLAPI中一系列不同类型的参数 我希望能够一次性声明参数及其类型,并重用此逻辑,而不是将其添加到每个查询中 只是想知道实现这一目标的最佳方式是什么?graphql规范是否适合此用例,或者我是否可以将参数集声明为字符串并将其添加到查询中?比如: let filterArgs=“timeStart:$startTime,timeEnd:$endTime,someFilter:$someFilter” let filterTypes=“$startTime,Dat

我有一组通用过滤器,它们是GraphQLAPI中一系列不同类型的参数

我希望能够一次性声明参数及其类型,并重用此逻辑,而不是将其添加到每个查询中

只是想知道实现这一目标的最佳方式是什么?graphql规范是否适合此用例,或者我是否可以将参数集声明为字符串并将其添加到查询中?比如:

let filterArgs=“timeStart:$startTime,timeEnd:$endTime,someFilter:$someFilter”
let filterTypes=“$startTime,DateTime!,$endTime:DateTime,$someFilter:String!”


干杯

在客户端,你真的没有什么其他可以做的了。这实际上更多的是模式设计的问题。将字段上的多个参数转换为单个输入对象类型通常是有意义的。当这些相同的参数跨模式中的多个字段进行复制时,这就更有意义了。比较

type Query {
  foo(baz: String, qux: String, quuz: String, corge: String, grault: String, garply: String, waldo: String, fred: String, plugh: String, xyzzy: String): Int!
  bar(baz: String, qux: String, quuz: String, corge: String, grault: String, garply: String, waldo: String, fred: String, plugh: String, xyzzy: String): Int!
}

将所有这些常用参数简化为单个类型不仅可以减少架构中的重复,还可以简化客户端的查询:

query SomeQuery($input: FilterInput) {
  foo(input: $input)
}

谢谢,丹尼尔!帮助我提高了对GraphQL的理解!
type Query {
  foo(input: FilterInput): Int!
  bar(input: FilterInput): Int!
}

input FilterInput {
  baz: String
  qux: String
  quuz: String
  corge: String
  grault: String
  garply: String
  waldo: String
  fred: String
  plugh: String
  xyzzy: String
}
query SomeQuery($input: FilterInput) {
  foo(input: $input)
}