如何将默认GraphQL参数传递给AWS AppSync解析器

时间:2018-07-12 09:51:38

标签: amazon-web-services graphql aws-appsync

AWS AppSync允许在这样的架构中定义default values

type Foo {
  bar(
    arg: Int = 20
  ): Bar!
}

或者那个

type Foo {
  bar(
    arg: Int! = 20
  ): Bar!
}

但是,无论哪种方式,当未明确定义值时,默认值都不会传递给解析器。

我应该选择启用激活默认值的方法吗?这是一个AWS错误吗?如果是这样,是否有解决方法?

PS:在GraphQL specs

  

如果未为定义的输入对象字段提供任何值,并且该字段定义提供了默认值,则应使用默认值。如果未提供默认值,并且输入对象字段的类型为非null,则将引发错误。否则,如果不需要该字段,则不会将任何条目添加到强制无序映射中。

1 个答案:

答案 0 :(得分:3)

默认参数当前是一个已知问题,解决这些问题的最佳方法是使用$util.defaultIfNull()速度帮助器函数。例如,您可以为limit和next令牌设置默认参数,例如:

{
  "version": "2017-02-28",
  "operation": "Scan",
  "limit": $util.defaultIfNull($ctx.args.first, 20),
  "nextToken": $util.toJson($util.defaultIfNullOrEmpty($ctx.args.after, null)),
}