Я пытаюсь использовать элемент обновления, так как в соответствии с вики он работает для обновления существующих и создания новых элементов:
"Редактирует атрибуты существующего элемента или добавляет новый элемент в таблицу, если он это делает еще не существует. "
Я хочу сохранить:
- при первом открытии элемента
- при последнем открытии элемента
- количество открытий элемента
У меня следующий код:
table.update_item(
Key={'item':"NEW"},
UpdateExpression="SET opens = if_not_exists(opens + :var1, :var0), last_open = :var2, first_open = if_not_exists(first_open, :var3)",
ExpressionAttributeValues={
':var0': "0",
':var1': "1",
':var2': '2020-04-01',
':var3': '1999-01-01'
},
ReturnValues="UPDATED_NEW"
)
возникает ошибка для новых и существующих элементов и говорит
Произошла ошибка (ValidationException) при вызове операции UpdateItem: Неверное выражение UpdateExpression: синтаксическая ошибка; токен: \ "+ \", рядом: \ "открывает +: var1 \" "
Следующие работы для существующих элементов, но выдает ошибку для новых:
table.update_item(
Key={'item':"NEW"},
UpdateExpression="SET opens = opens + :var1, last_open = :var2, first_reachout = if_not_exists(first_open, :var3)",
ExpressionAttributeValues={
':var1': "1",
':var2': '2020-04-01',
':var3': '1999-01-01'
},
ReturnValues="UPDATED_NEW"
)
Ошибка только для новых:
"Произошла ошибка (ValidationException) при вызове операции UpdateItem: предоставленное выражение ссылается на атрибут, который не существует в элементе"
Полагаю, это означает атрибут контактов, но включение его в "if_not_exists" также не работает ....