1

我在 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 中是否有任何看起来可能导致该错误的内容?

4

0 回答 0