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"
},