我在 Retool 中使用 Dynamodb 资源,这对于 GETs/Scans/Puts/Queries 来说是成功的,但我似乎无法让 UpdateItem 语句正常工作。
我正在尝试更新一个项目,如果它不存在,则为地图列表添加一个键,如果该键已经存在,则附加一个项目。
配置
更新表达式
SET images = list_append(:val, if_not_exists(images, :emptylist))
表达式属性值
在 Retool 中,我的 ExpressionAttributeValues 是
":val": [{"location": "{{s3Uploader1.s3FolderName}}/{{s3Uploader1.s3FileName}}"}], ":emptylist":[]
,它从 s3Uploader 中提取 s3 文件夹和文件名并呈现到":val": [{"location": "redactedpath/redacted/redactedfilename"}], ":emptylist":[]
我最初尝试调用数据类型的格式,例如“M”、“L”等,但我得到了完全相同的错误。
":val":
{
"L":
[
{
"M":
{
"location":
{
"S": "{{s3Uploader1.s3FolderName}}/{{s3Uploader1.s3FileName}}"
}
}
}
]
},
":emptylist":
{
"L":[]
}
结果/错误
当我运行查询时,我收到以下错误:
statusCode:422
error:"Unprocessable Entity"
message:"ExpressionAttributeValues contains invalid key: Syntax error; key: "44""
data:null
estimatedResponseSizeBytes:147
resourceTimeTakenMs:363
isPreview:false
resourceType:"dynamodb"
lastReceivedFromResourceAt:1644774304601
source:"resource"
据我了解,该错误消息通常指定导致问题的实际键,但据我所知,我的 ExpressionAttributeValues 不包含 string 44
。我想知道这是否来自 Retool 或者它可能是一个位置而不是实际密钥。
我已经挖掘了 StackOverflow 的深度来尝试不同的东西,但现在我觉得我被困住了。
附加信息
- 我原来的 ExpressionAttributeValues 是基于Is it possible to combine if_not_exists and list_append in update_item
- 类似的问题,但没有答案和不同的键:ValidationException: ExpressionAttributeValues contains invalid key
ExpressionAttributeValues 中是否有任何看起来可能导致该错误的内容?