Dynamodb - ExpressionAttributeNames 的条件表达式不起作用
Dynamodb - Condition Expression with ExpressionAttributeNames not working
我正在尝试进行条件更新,并且由于字段名称是保留关键字,我正在使用 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"
},
我正在尝试进行条件更新,并且由于字段名称是保留关键字,我正在使用 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"
},