AWS AppSync订阅参数

时间:2018-04-19 19:23:20

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

AppSync GraphQL订阅的参数可以用于什么?根据文档中的real-time data页面:

  

使用GraphQL订阅的一个重要部分是了解何时以及如何使用参数,因为细微的更改将允许您修改客户端通知发生的突变的方式和时间。   (......)   在默认示例中,客户端可以在通过

传递特定eventId参数时订阅注释

但是我找不到任何方法来访问订阅参数。我有不同的“渠道”评论,我希望用户能够单独订阅,可选择使用密码。我设置的订阅会响应所有渠道中的评论。

有没有办法通过映射模板或类似工具'过滤'来自订阅的数据?如果没有,订阅参数的预期用途是什么?过滤必须在客户端完成吗?

2 个答案:

答案 0 :(得分:6)

参数的名称应与触发事件的突变响应中的字段名称相同。如果您的突变返回包含字段“title”的类型为“Post”的值,则将名为“title”的参数传递给订阅该突变的订阅只会获得推送值,其中“title”传递给订阅等于变异返回的名为“title”的字段的值。

答案 1 :(得分:1)

参数控制客户端将从哪些数据获取订阅通知。例如,如果您通过使用bang(!)符号所需的模式输入参数,则客户端只能订阅该参数的特定变异数据。

GraphQL参数,包括订阅中传递的参数,应该通过解析器中的$ctx.args提供(这是$context.arguments的简写)。例如,如果您有getThing(name:"XYZ")的查询,则可以使用$ctx.args.name访问解析程序。

对于您的用例,我建议在订阅时使用参数和解析器,以便用户只能通过该参数订阅频道,如果它们符合某些授权标准,例如密码或查看登录用户。你可以在这里找到一个例子:https://docs.aws.amazon.com/appsync/latest/devguide/security-authorization-use-cases.html#real-time-data