【发布时间】:2019-04-03 00:31:27
【问题描述】:
我有以下架构:
input CreateEventInput {
userID: String!
eventID: ID!
type: String!
data: String
dateTime: AWSDateTime!
}
type Mutation {
createEvent(input: CreateEventInput!): event
}
type Subscription {
onCreateEvent(): event
@aws_subscribe(mutations: ["createEvent"])
createEvent 解析器将userID 设置为:
"key" : {
"userID" : $util.dynamodb.toDynamoDBJson($context.identity.username),
"eventID" : $util.dynamodb.toDynamoDBJson($util.autoId())
}
我想限制订阅,以便仅将userID = $context.identity.username 的记录返回给用户。
有人知道怎么设置吗?我想我需要一个关于订阅的解析器,但我找不到一个明确的例子,你有一个主分区键 (userID) 和主排序键 (eventID)。
非常感谢任何帮助或指导。如果需要,我可以更改架构或数据库。
更新:
我相信我可以将订阅响应映射模板设置为:
#if(${context.identity.username} != ${context.arguments.userID})
$utils.unauthorized()
#else
##User is authorized, but we return null to continue
null
#end
但是,我不知道该在请求映射模板中添加什么。
【问题讨论】:
-
明确地说,您是否让用户订阅他们自己的突变?
-
没错。我想防止他们得到其他用户的突变。
标签: amazon-dynamodb amazon-cognito aws-appsync aws-amplify appsync-apollo-client