Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在特定索引处替换列表中的元素_Javascript_Amazon Web Services_Amazon Dynamodb_Aws Sdk - Fatal编程技术网

Javascript 如何在特定索引处替换列表中的元素

Javascript 如何在特定索引处替换列表中的元素,javascript,amazon-web-services,amazon-dynamodb,aws-sdk,Javascript,Amazon Web Services,Amazon Dynamodb,Aws Sdk,阅读时,他们说我可以在列表中添加一个元素,但我正在尝试,它不断向文档中添加一个新项,其键为arrayName[index],如下所示: 我正在尝试此查询: await documentClient.transactWrite({ TransactItems: [{ Update: { TableName: recordsTable, Key: { id: selectedRec.id }, Updat

阅读时,他们说我可以在列表中添加一个元素,但我正在尝试,它不断向文档中添加一个新项,其键为arrayName[index],如下所示:

我正在尝试此查询:

    await documentClient.transactWrite({
      TransactItems: [{
        Update: {
          TableName: recordsTable,
          Key: { id: selectedRec.id },
          UpdateExpression: 'SET #k1 = :v1',
          ExpressionAttributeNames: {
            '#k1': `occurrences[${idx}]`, // idx = 245
          },
          ExpressionAttributeValues: {
            ':v1': selectedOccurrence, // a map object
          },
        }
      }, {
         // another query irrelevant to problem
      }]
    }).promise();
这就是本文件的结尾:

它应该替换引用数组中索引245中的对象,但它在我的文档中添加了一个带有关键字引用[245]的新映射


我做错了什么?

表达式属性中不能包含下标。只能指示属性名称

有两种方法可以解决此问题:

UpdateExpression: `SET #k1[${idx}] = :v1`,
ExpressionAttributeNames: { '#k1': 'occurrences' }
或:


请注意,如果属性名为a,则第二种解决方案将不起作用。

是否尝试不使用属性名映射?例如:UpdateExpression:SET引用[${idx}]=:v1@jarmod是的,它确实起作用了!为什么使用ExpressionAttributeNames购买不起作用?不确定为什么不支持名称替换步骤,但我并不感到惊讶。可能与评估事物的顺序有关。您还可以尝试:UpdateExpression:SET k1[${idx}]=:v1仍然提供属性名称映射,以查看这是否有效。
UpdateExpression: `SET occurrences[${idx}] = :v1`