Я пытаюсь выполнить условное обновление, и, поскольку имя поля является зарезервированным ключевым словом, я использую ExpressionAttributeNames для передачи имени столбца для условия. Часть обновления не работает, если я использую ExpressionAttributeNames. Есть предположения?
Update: {
Key: {
"pk": "sb#prd#" + productId,
"sk": productId.toString()
},
TableName: 'test',
ConditionExpression: '#minQty >= :minQty',
UpdateExpression: "set sold_count = :sold_count",
ExpressionAttributeNames: {
"#minQty" : "variant[0].items[0].availableQty"
},
ExpressionAttributeValues: {
":sold_count" : 1,
":minQty" : 1
},
}
Псевдонимы, определенные в ExpressionAttributeNames, могут быть только одним именем атрибута — они не могут быть полными путями, такими как variant[0].items[0].availableQty
.
Вы можете сделать что-то вроде:
ConditionExpression: '#v[0].#i[0].#a >= :minQty',
ExpressionAttributeNames: {
"#v" : "variant",
"#i" : "items",
"#a" : "availableQty"
},