簡體   English   中英

如何按主鍵和其他條件更新項目?

[英]How to update item by primary key and other conditions?

我想通過email (HASH PK), idverifyToken更新項目。 我的查詢如下所示:

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'並且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 )相結合,這些參數僅用於向后兼容。 正如錯誤所述,您無法做到這一點。

您需要將UpdateExpressionConditionExpression結合使用。

這將是這樣的。 您可能需要在UpdateExpression使用表達式屬性名稱/值:

ConditionExpression: 'id = :id and verifyToken = :verifyToken'
UpdateExpression: 'SET verified = true, REMOVE verifyToken'

有關更新表達式的更多信息,請參閱此文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM