Node.js 从dynamo db表中移除对象';s嵌套列表(如果存在)
我使用带有aws sdk的node尝试从dynamo db表中的嵌套对象列表中删除一个项(对象),如果它存在的话,但它似乎比我希望的要复杂 我在前面看到了对一个类似问题的回答,但他们忽略了他们实际上是如何获得他们试图删除的索引的 我所拥有的是这样的: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: "
{
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中搜索索引的方法。这是您需要在应用程序代码中执行的操作
这是使用复杂属性建立一对多关系模型的一个缺点。糟糕,幸运的是我已经做了,但确实是糟糕,如果我不打两个单独的电话,这是不可能做到的。谢谢你让我知道