2

AppSync GraphQL 订阅上的参数可以用来做什么?根据文档上的实时数据页面:

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

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

有什么方法可以通过映射模板或类似模板“过滤”订阅中的数据?如果不是,订阅参数的预期用途是什么?过滤必须在客户端完成吗?

4

2 回答 2

13

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

于 2018-04-23T23:40:10.677 回答
1

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

GraphQL 参数,包括那些在订阅中传递的参数,应该$ctx.args在你的解析器中可用(这是 的简写$context.arguments)。例如,如果您有getThing(name:"XYZ")then 的查询,您可以在解析器中使用$ctx.args.name.

对于您的用例,我建议在订阅中使用参数和解析器,以便用户只能通过该参数订阅频道,前提是他们符合某些授权条件,例如密码或查看登录用户。您可以在此处找到一个示例:https ://docs.aws.amazon.com/appsync/latest/devguide/security-authorization-use-cases.html#real-time-data

于 2018-04-19T20:02:04.000 回答