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

Yve*_* M. 6 amazon-web-services graphql aws-appsync

AWS AppSync允许在这样的架构中定义默认值

type Foo {
  bar(
    arg: Int = 20
  ): Bar!
}
Run Code Online (Sandbox Code Playgroud)

或者那个

type Foo {
  bar(
    arg: Int! = 20
  ): Bar!
}
Run Code Online (Sandbox Code Playgroud)

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

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

PS:在GraphQL规格中

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

mpa*_*ris 9

默认参数目前是一个已知问题,解决它们的最佳方法是使用$util.defaultIfNull()速度辅助函数。例如,你可以为 limit 和 next token 做这样的事情的默认参数:

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

  • @mparis 是否对此有任何更新,因为这似乎仍未按规范预期的那样工作? (4认同)
  • 你是对的。这是一个已知问题,将来会修复。 (3认同)
  • 如果你再等 6 年,有传言 AppSync 团队会解决这个问题。 (2认同)