Amazon dynamodb 如何根据主键和其他条件更新项目?

Amazon dynamodb 如何根据主键和其他条件更新项目?,amazon-dynamodb,Amazon Dynamodb,我正试图通过电子邮件(散列PK)、id和verifyToken更新项目。我的查询如下所示: params = TableName: 'users' Key: email: S: 'example@email.com' AttributeUpdates: verified: Action: 'PUT' Value: BOOL: true verifyToken: Action: 'DELETE'

我正试图通过
电子邮件
(散列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)
换句话说,我想更新邮件中的项目example@email.com'AND id='123'和verifyToken='XXX',但我得到以下错误:

Can not use both expression and non-expression parameters in the same request: 
Non-expression parameters: {AttributeUpdates} 
Expression parameters: {ConditionExpression}

您正在将旧参数(
AttributeUpdates
)与表达式参数(
ConditionExpression
)组合在一起,后者仅用于向后兼容。正如错误所述,您不能这样做

您需要将条件表达式与
条件表达式一起使用

应该是这样的。您可能需要在
UpdateExpression
中使用表达式属性名称/值:

ConditionExpression: 'id = :id and verifyToken = :verifyToken'
UpdateExpression: 'SET verified = true, REMOVE verifyToken'
有关更新表达式的详细信息,请参见