我正在尝试按email
(HASH PK),id
和verifyToken
更新项目。我的查询如下:
params =
TableName: 'users'
Key:
email:
S: 'example@email.com'
AttributeUpdates:
verified:
Action: 'PUT'
Value:
BOOL: true
verifyToken:
Action: 'DELETE'
ExpressionAttributeValues:
':id': { S: '123' }
':verifyToken': { S: 'XXX' }
ConditionExpression: 'id = :id and verifyToken = :verifyToken'
dynamodb.updateItem(params)
换句话说,我想更新项目,其中email ='example@email.com'AND id ='123'AND verifyToken ='XXX',但我收到以下错误:
Can not use both expression and non-expression parameters in the same request:
Non-expression parameters: {AttributeUpdates}
Expression parameters: {ConditionExpression}
答案 0 :(得分:6)
您正在将遗留参数(AttributeUpdates
)与表达式参数(ConditionExpression
)相结合,这些参数仅用于向后兼容。正如错误所述,你不能这样做。
您需要将UpdateExpression
与ConditionExpression
一起使用。
会是这样的。您可能需要在UpdateExpression
:
ConditionExpression: 'id = :id and verifyToken = :verifyToken'
UpdateExpression: 'SET verified = true, REMOVE verifyToken'
有关更新表达式的更多信息,请参阅this documentation