Appsync 自定义解析器错误 "Unable to transform Response Template"
Appsync custom resolver error "Unable to transform Response Template"
我正在尝试编写“BatchPutItem”自定义解析器,以便我可以创建多个项目(一次不超过 25 个),它应该接受参数列表,然后执行批处理操作。
这是我在 CusomtResolver 中的代码:
#set($pdata = [])
#foreach($item in ${ctx.args.input})
$util.qr($item.put("createdAt", $util.time.nowISO8601()))
$util.qr($item.put("updatedAt", $util.time.nowISO8601()))
$util.qr($item.put("__typename", "UserNF"))
$util.qr($item.put("id", $util.defaultIfNullOrBlank($item.id, $util.autoId())))
$util.qr($pdata.add($util.dynamodb.toMapValues($item)))
#end
{
"version" : "2018-05-29",
"operation" : "BatchPutItem",
"tables" : {
"Usertable1-staging": $utils.toJson($pdata)
}
}
查询控制台部分的响应:
{
"data": {
"createBatchUNF": null
},
"errors": [
{
"path": [
"createBatchUserNewsFeed"
],
"data": null,
"errorType": "MappingTemplate",
"errorInfo": null,
"locations": [
{
"line": 2,
"column": 3,
"sourceName": null
}
],
"message": "Unsupported operation 'BatchPutItem'. Datasource Versioning only supports the following operations (TransactGetItems,PutItem,BatchGetItem,Scan,Query,GetItem,DeleteItem,UpdateItem,Sync)"
}
]
}
查询是:
mutation MyMutation {
createBatchUNF(input: [{seen: false, userNFUserId: "userID", userNFPId: "pID", user NFPOwnerId: "ownerID"}]) {
items {
id
seen
}
}
}
冲突检测也已关闭
当我检查云日志时,我发现了这个错误:
我可以通过禁用 DataStore for entire API
来解决这个问题。
当我们使用 amplify 控制台创建一个新的 project/backend 应用程序时,它会在数据选项卡中要求我们启用数据存储,以便我们可以开始建模我们的 GraphQL api,这就是为整个 [启用版本控制的原因=20=],它阻止了 batchWrite 的执行。
因此,为了解决这个问题,我们可以按照以下步骤操作:
[注意:我使用的是@aws-amplify/cli]
$ amplify update api
? Please select from one of the below mentioned services: GraphQL
? Select from the options below: Disable DataStore for entire API
然后amplify push
这将解决此问题。
我正在尝试编写“BatchPutItem”自定义解析器,以便我可以创建多个项目(一次不超过 25 个),它应该接受参数列表,然后执行批处理操作。 这是我在 CusomtResolver 中的代码:
#set($pdata = [])
#foreach($item in ${ctx.args.input})
$util.qr($item.put("createdAt", $util.time.nowISO8601()))
$util.qr($item.put("updatedAt", $util.time.nowISO8601()))
$util.qr($item.put("__typename", "UserNF"))
$util.qr($item.put("id", $util.defaultIfNullOrBlank($item.id, $util.autoId())))
$util.qr($pdata.add($util.dynamodb.toMapValues($item)))
#end
{
"version" : "2018-05-29",
"operation" : "BatchPutItem",
"tables" : {
"Usertable1-staging": $utils.toJson($pdata)
}
}
查询控制台部分的响应:
{
"data": {
"createBatchUNF": null
},
"errors": [
{
"path": [
"createBatchUserNewsFeed"
],
"data": null,
"errorType": "MappingTemplate",
"errorInfo": null,
"locations": [
{
"line": 2,
"column": 3,
"sourceName": null
}
],
"message": "Unsupported operation 'BatchPutItem'. Datasource Versioning only supports the following operations (TransactGetItems,PutItem,BatchGetItem,Scan,Query,GetItem,DeleteItem,UpdateItem,Sync)"
}
]
}
查询是:
mutation MyMutation {
createBatchUNF(input: [{seen: false, userNFUserId: "userID", userNFPId: "pID", user NFPOwnerId: "ownerID"}]) {
items {
id
seen
}
}
}
冲突检测也已关闭
当我检查云日志时,我发现了这个错误:
我可以通过禁用 DataStore for entire API
来解决这个问题。
当我们使用 amplify 控制台创建一个新的 project/backend 应用程序时,它会在数据选项卡中要求我们启用数据存储,以便我们可以开始建模我们的 GraphQL api,这就是为整个 [启用版本控制的原因=20=],它阻止了 batchWrite 的执行。
因此,为了解决这个问题,我们可以按照以下步骤操作:
[注意:我使用的是@aws-amplify/cli]
$ amplify update api
? Please select from one of the below mentioned services: GraphQL
? Select from the options below: Disable DataStore for entire API
然后amplify push
这将解决此问题。