使用AppSync与DynamoDB时报Invalid UpdateExpression语法错误如何解决
问题解决方案
错误根源
DynamoDB的UpdateItem操作的UpdateExpression语法要求SET子句必须遵循SET <属性引用> = <值引用>的格式,你当前请求模板中的表达式缺少赋值等号,直接写为SET #p :da,因此触发语法错误。
修复步骤
- 修改请求模板中的
update.expression配置,补充等号:
{ "version" : "2017-02-28", "operation" : "UpdateItem", "key" : { "name" : $util.dynamodb.toDynamoDBJson($ctx.identity.username), "attribute": $util.dynamodb.toDynamoDBJson("info") }, "update" : { "expression" : "SET #p = :da", "expressionNames" : { "#p" : "data" }, "expressionValues" : { ":da" : $util.dynamodb.toDynamoDBJson($ctx.args.profileInput) } } }
- (可选)修复响应模板匹配返回结构:你当前把profile数据存在DynamoDB项的
dataMap字段中,原响应模板直接返回整项的话,无法匹配Schema定义的Profile字段结构,会导致返回的name、location为空,可将响应模板修改为:
$util.toJson($ctx.result.Attributes.data)
修改后就能正常返回你需要的Profile字段内容。
内容的提问来源于stack exchange,提问作者plutolaser
相关产品推荐
相关产品推荐

