繁体   English   中英

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

[英]How to replace an element in a list at specific index

阅读文档时 ,他们说我可以在列表中添加一个元素,但是我正在尝试,并且它一直在向文档添加新项,其键为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();

这是本文档的结尾方式:

在此处输入图片说明

它应替换occurrences数组中索引245中的对象,但应在我的文档中添加一个包含关键occurrences[245]的新映射。

我做错了什么?

您不能在ExpressionAttributeNames包含下标。 您只能指示属性名称。

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

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

要么:

UpdateExpression: `SET occurrences[${idx}] = :v1`

请注意,如果您的属性名称是保留字 ,则第二个解决方案将不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM