我正在尝试通过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)
Run Code Online (Sandbox Code Playgroud)
换句话说,我想更新项目,其中email ='example@email.com'并且id ='123'并且verifyToken ='XXX',但是我收到以下错误:
Can not use both expression and non-expression parameters in the same request:
Non-expression parameters: {AttributeUpdates}
Expression parameters: {ConditionExpression}
Run Code Online (Sandbox Code Playgroud)
您正在将遗留参数(AttributeUpdates)(仅用于向后兼容)与表达式参数(ConditionExpression)组合在一起.正如错误所述,您无法做到这一点.
你需要UpdateExpression和你一起使用ConditionExpression.
这将是这样的.您可能需要在以下位置使用表达式属性名称/值UpdateExpression:
ConditionExpression: 'id = :id and verifyToken = :verifyToken'
UpdateExpression: 'SET verified = true, REMOVE verifyToken'
Run Code Online (Sandbox Code Playgroud)
有关更新表达式的更多信息,请参阅此文档
| 归档时间: |
|
| 查看次数: |
2592 次 |
| 最近记录: |