AppSync BatchDeleteItem 未正确执行
AppSync BatchDeleteItem not executes properly
我正在使用 AppSync 开发 React Native 应用程序,以下是我对问题的架构:
type JoineeDeletedConnection {
items: [Joinee]
nextToken: String
}
type Mutation {
deleteJoinee(ids: [ID!]): [Joinee]
}
在 'request mapping template' 到 deleteJoinee
的解析器中,我有以下内容(遵循 https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html 的教程):
#set($ids = [])
#foreach($id in ${ctx.args.ids})
#set($map = {})
$util.qr($map.put("id", $util.dynamodb.toString($id)))
$util.qr($ids.add($map))
#end
{
"version" : "2018-05-29",
"operation" : "BatchDeleteItem",
"tables" : {
"JoineesTable": $util.toJson($ids)
}
}
..并在 'response mapping template' 到解析器,
$util.toJson($ctx.result.data.JoineesTable)
问题是,当我 运行 查询时,我得到的结果是空的,也没有任何内容被删除到数据库中:
// calling the query
mutation DeleteJoinee {
deleteJoinee(ids: ["xxxx", "xxxx"])
{
id
}
}
// returns
{
"data": {
"deleteJoinee": [
null
]
}
}
我终于解开了这个谜题,多亏了提到的答案给我指明了方向。
尽管我注意到 JoineesTable 确实已将 entity/role 信任到 IAM 'Roles' 部分,但由于某种原因它无法正常工作。进一步研究,我注意到现有政策默认遵循 actions
:
"Action": [
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:Query",
"dynamodb:Scan",
"dynamodb:UpdateItem"
]
一旦我将以下两个 actions
添加到列表中,事情就开始起作用了:
"dynamodb:BatchWriteItem",
"dynamodb:BatchGetItem"
感谢@Vasileios Lekakis 和@Ionut Trestian 完成此 appSync 任务)
我正在使用 AppSync 开发 React Native 应用程序,以下是我对问题的架构:
type JoineeDeletedConnection {
items: [Joinee]
nextToken: String
}
type Mutation {
deleteJoinee(ids: [ID!]): [Joinee]
}
在 'request mapping template' 到 deleteJoinee
的解析器中,我有以下内容(遵循 https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html 的教程):
#set($ids = [])
#foreach($id in ${ctx.args.ids})
#set($map = {})
$util.qr($map.put("id", $util.dynamodb.toString($id)))
$util.qr($ids.add($map))
#end
{
"version" : "2018-05-29",
"operation" : "BatchDeleteItem",
"tables" : {
"JoineesTable": $util.toJson($ids)
}
}
..并在 'response mapping template' 到解析器,
$util.toJson($ctx.result.data.JoineesTable)
问题是,当我 运行 查询时,我得到的结果是空的,也没有任何内容被删除到数据库中:
// calling the query
mutation DeleteJoinee {
deleteJoinee(ids: ["xxxx", "xxxx"])
{
id
}
}
// returns
{
"data": {
"deleteJoinee": [
null
]
}
}
我终于解开了这个谜题,多亏了提到的答案
尽管我注意到 JoineesTable 确实已将 entity/role 信任到 IAM 'Roles' 部分,但由于某种原因它无法正常工作。进一步研究,我注意到现有政策默认遵循 actions
:
"Action": [
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:Query",
"dynamodb:Scan",
"dynamodb:UpdateItem"
]
一旦我将以下两个 actions
添加到列表中,事情就开始起作用了:
"dynamodb:BatchWriteItem",
"dynamodb:BatchGetItem"
感谢@Vasileios Lekakis 和@Ionut Trestian 完成此 appSync 任务)