我们可以通过 AWS SDK 使用 GSI 删除 DynamoDB 中的项目吗?

Can we delete item in DynamoDB using GSI by AWS SDK?

我 table 使用 GSI 并尝试使用 GSI 删除项目,如下所示。
但是我收到以下错误。

"The provided key element does not match the schema".

我尝试使用以下关键字进行查询并成功了。
所以我已经确认提供的关键元素是正确的。
我试图搜索是否可以通过 GSI 进行删除操作,但找不到好的文档。

谁能告诉我使用 GSI 删除项目的最佳方法是什么?

async function deleteProject(projectDB:string,projectId:string):Promise<any>{
  
  const params={
    TableName:projectDB,
    IndexName:'projectId-index',
    Key:{
      'projectId':projectId,
    },
    ExpressionAttributeNames: { '#a': 'projectId' },
    ExpressionAttributeValues: {":val": projectId},
    ConditionExpression:"#a = :val",
  }
  const result=await db.delete(params).promise();
  console.log('result',result);

  return result;
}

您不能通过二级索引删除项目。二级索引的作用类似于基 table 的 只读视图,因此如果要删除数据,则必须从基 table 中删除它].

理想情况下,您可以将基础 table 中的关键属性投射到全球二级索引中。如果你想删除一个项目,你可以使用你在 GSI 中看到的值从基础 table 中删除它。

注意: 这将从基础 table 中删除该项目,因此也会从所有二级索引中删除该项目。

如果您只想从 GSI 中删除它,则需要从基础 table 中的项目中删除用作 GSI 键的属性,然后它不会被复制到 GSI。