如何使用Dynamo的单个UpdateExpression进行SET和DELETE

Koo*_*op4 8 node.js amazon-dynamodb

我正在尝试使用updateExpression更新项目,并且我想编辑属性并删除同一对象上的另一个属性,但是我收到以下错误:

无效的UpdateExpression:语法错误; 令牌:EOF附近:"attributeToDelete"

我不得不承认我写了更新表达式猜测使用它的正确方法(失败).这是代码片段:

dynamodb.updateAsync({
    TableName: `myTable`,
    Key: { id: req.params.id },
    UpdateExpression: 'SET attributeToEdit = :newValue DELETE attributeToDelete',
    ExpressionAttributeValues: { ':newValue': 'valueToSet' },
  })
Run Code Online (Sandbox Code Playgroud)

当我想要包含多个动作时,我应该如何编写UpdateExpression?(其中的操作是 - > SET,DELETE,REMOVE,ADD)

not*_*est 21

使用REMOVE而不是DELETE.DELETE用于从SET中删除元素.

 UpdateExpression: 'SET attributeToEdit = :newValue REMOVE attributeToDelete',
Run Code Online (Sandbox Code Playgroud)

REMOVE - 从项目中删除一个或多个属性.

  • 我的经验是我在 REMOVE 之前加了一个逗号。因此我的表达失败了。所以不要输入 DONT PUT COMMA。:) (15认同)
  • 另外,当问题是`,`时,语法解析器会“责怪”`REMOVE`(因为它处于列表解析模式进行设置操作......你知道的越多!!) (3认同)