Node.js 从dynamo db表中移除对象';s嵌套列表(如果存在)

Node.js 从dynamo db表中移除对象';s嵌套列表(如果存在),node.js,amazon-dynamodb,aws-sdk,dynamodb-queries,aws-sdk-nodejs,Node.js,Amazon Dynamodb,Aws Sdk,Dynamodb Queries,Aws Sdk Nodejs,我使用带有aws sdk的node尝试从dynamo db表中的嵌套对象列表中删除一个项(对象),如果它存在的话,但它似乎比我希望的要复杂 我在前面看到了对一个类似问题的回答,但他们忽略了他们实际上是如何获得他们试图删除的索引的 我所拥有的是这样的: { id: "1", resources: { resource1: [ { resource1Id: "63236", name: "

我使用带有aws sdk的node尝试从dynamo db表中的嵌套对象列表中删除一个项(对象),如果它存在的话,但它似乎比我希望的要复杂

我在前面看到了对一个类似问题的回答,但他们忽略了他们实际上是如何获得他们试图删除的索引的

我所拥有的是这样的:

{
  id: "1",
  resources: {
    resource1: [
      {
        resource1Id: "63236",
        name: "This is the first resource1 resource"
      }
    ],
    resource2: [
      {
        resource2Id: "63236",
        name: "This is the first resource2 resource"
      },
      {
        resource2Id: "12345",
        name: "I want to remove this"
      }
    ]
  {
}
    query = "REMOVE resources.resource2[%d]" % (index_to_be_removed)

    const updateParams = {
      TableName: myTable,
      Key: {
        "id": myId
      },
      "UpdateExpression": "query",
      "ReturnValues": "UPDATED_NEW"
    }
    return await this.dynamodbClient.update(updateParams).promise()
现在让我们假设我要删除此项:

{
  resource2Id: "12345",
  name: "I want to remove this"
}
从resource2列表中

我想我需要这样做:

{
  id: "1",
  resources: {
    resource1: [
      {
        resource1Id: "63236",
        name: "This is the first resource1 resource"
      }
    ],
    resource2: [
      {
        resource2Id: "63236",
        name: "This is the first resource2 resource"
      },
      {
        resource2Id: "12345",
        name: "I want to remove this"
      }
    ]
  {
}
    query = "REMOVE resources.resource2[%d]" % (index_to_be_removed)

    const updateParams = {
      TableName: myTable,
      Key: {
        "id": myId
      },
      "UpdateExpression": "query",
      "ReturnValues": "UPDATED_NEW"
    }
    return await this.dynamodbClient.update(updateParams).promise()

但我不知道如何删除索引。他们肯定不希望我单独查询并搜索列表?似乎应该有一种方法告诉他们列表中的id,以便在一次调用中查找并删除它。

不幸的是,DynamoDB没有提供从UpdateExpression中搜索索引的方法。这是您需要在应用程序代码中执行的操作


这是使用复杂属性建立一对多关系模型的一个缺点。

糟糕,幸运的是我已经做了,但确实是糟糕,如果我不打两个单独的电话,这是不可能做到的。谢谢你让我知道