2015-08-28 66 views
3

我正在嘗試更新email(HASH PK),idverifyToken。我的查詢是這樣的:如何通過主鍵和其他條件更新項目?

params = 
    TableName: 'users' 
    Key: 
    email: 
     S: '[email protected]' 
    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 protected]」和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} 

回答

5

您正在結合傳統參數(AttributeUpdates),這是唯一存在的向後兼容性,其中表達參數(ConditionExpression)。如錯誤狀態,你不能這樣做。

您需要將UpdateExpression與您的ConditionExpression結合使用。

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

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

關於更新的詳細信息,請參閱this documentation表達式

相關問題