2016-07-10 2 views
1

Может ли DynamoDB UpdateItem пройти опцию, чтобы сбой вызова UpdateItem на несуществующие элементы?Как разрешить UpdateItem для существующих ресурсов dynamoDB?

В настоящее время UpdateItem счастливо создает новый элемент, если ключ раздела не существует. Вместо этого я хочу ошибку в этой конкретной ситуации.

Конечно, я могу получить доступ до updateItem и только сделать updateItem о существовании, но это менее результативно/громоздко.

+0

Было бы менее результативным. Вы проверили это? Я не знаю себя, но мне любопытно. – arjabbar

+1

Без сомнения. Есть, по крайней мере, еще один минус плюс плюс, в моем случае, один проход проходит через Api gateway. Вдобавок к этому dynamodb, скорее всего, сможет сделать условный пост быстрее, чем get plus, который добавляется отдельно, но эта последняя часть является предположением. –

ответ

1

Вы можете сделать условное обновление с помощью ConditionExpression.

API условных обновлений довольно мощный, но в вашем случае вы захотите создать выражение условия, которое проверяет, будет ли элемент, который вы пытаетесь обновить, с помощью условного выражения на ключ раздела элемента (и диапазон если ваша таблица использует один).

Поскольку вы не указали язык программирования, лучшим местом для начала является the documentation.

+0

А это довольно мощный! –

+0

Что такое синтаксис ConditionExpression, который будет использоваться в PHP –

0

Чтобы быть более точным, вы должны установить ConditionExpression: "attribute_exists(<your key attribute name>)".

Это не удастся, если ключевой связанный элемент не существует - DynamoDB ищет ключевой элемент, не найден, и все вызовы не выполняются.

В противном случае, если элемент существует, он всегда имеет атрибут ключа, поэтому attribute_exists(key) возвращает true.