#node.js #amazon-dynamodb
#node.js #amazon-dynamodb
Вопрос:
Можно ли удалять записи из dynamodb на основе PrimaryKey и ConditionExpression
SortKey?
Следующий пример кода выдает для меня исключение
DeleteVideoCall = async function (pk, sk) {
let params = {
TableName: this._tableName,
Key: {
pk: { S: pk.toString() },
sk: { S: sk.toString() }
},
ConditionExpression: "begins_with(sk,:sk)",
ExpressionAttributeValues: {
":sk" : { S: sk.toString() "_" }
}
};
return this._ddb
.deleteItem(params)
.promise()
.then((data) => {
console.log(`Video Call '${pk}/${sk}' deleted`);
return null;
})
.catch((error) => {
console.error(
`Error deleting video room '${pk}/${sk}' (${error})`
);
throw error;
});
};
Я хочу удалить все записи, которые begins_with
sk и . Например, если sk равен 560622, удалите все записи, где sk начинается с 560622
с помощью приведенного выше кода я получаю эту ошибку:
Ошибка при удалении видеозала ‘10900/560622’ (исключение ConditionalCheckFailedException: не удалось выполнить условный запрос)
Ответ №1:
Вы не можете этого сделать. Для выполнения удаления вам нужен весь ключ. Что вы можете сделать:
- элементы запроса (ограничьте полученные свойства вашими PK и SK)
- используйте пакетную запись для удаления нескольких элементов, она также принимает запросы на удаление