Я использую узел с aws-sdk, чтобы попытаться удалить элемент (объект) из вложенного списка объектов в таблице Dynamo db, если он существует, но это кажется более сложным, чем я надеялся.
Я видел этот ответ на аналогичный вопрос ранее, но они упустили, как они на самом деле получили индекс, который они пытаются удалить.
Добавить или удалить запись из атрибута типа списка в элементе таблицы DynamoDB
То, что у меня есть, выглядит так:
{
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"
}
]
{
}
теперь скажем, я хочу удалить это:
{
resource2Id: "12345",
name: "I want to remove this"
}
из списка ресурсов2
Я думаю, мне нужно сделать что-то вроде этого:
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()
Но я не уверен, как получить index_to_be_removed. Неужели они не ожидают, что я сам сделаю отдельный запрос и пройдусь по списку? Кажется, должен быть способ сообщить им идентификатор в списке, чтобы искать и удалять его, если он существует, за один вызов.