我正在运行一个使用Node.js编写的AWS Lambda服务,它与DynamoDB数据库交互。我的其中一个方法执行了一个更新(AWS.DynamoDB.DocumentClient().update),用于更新特定项的DynamoDB。然而,我的问题是,当我尝试更新一个不存在的项目时,更新方法会将此新项目添加到我的表中。这种行为在文档中也是默认描述的。
如果记录不存在,我不希望我的方法创建新项目。我希望这只是一个更新,仅在记录存在时才进行更新。如果不存在,则不执行任何操作。我该如何实现这一点?我认为我应该能够使用ConditionalExpression来实现这一点,但我尝试过的方法都没有成功。
下面是我当前发送给更新函数的参数示例。在此示例中,我要更新具有userId 123的用户,并将isActive字段设置为“false”(但我只想在用户123实际存在时才这样做!)
如果记录不存在,我不希望我的方法创建新项目。我希望这只是一个更新,仅在记录存在时才进行更新。如果不存在,则不执行任何操作。我该如何实现这一点?我认为我应该能够使用ConditionalExpression来实现这一点,但我尝试过的方法都没有成功。
下面是我当前发送给更新函数的参数示例。在此示例中,我要更新具有userId 123的用户,并将isActive字段设置为“false”(但我只想在用户123实际存在时才这样做!)
const params = {
TableName: 'users',
Key: {
userId: '123',
},
ExpressionAttributeValues: {
':isActive': 'false'
},
UpdateExpression: 'SET isActive = :isActive',
ReturnValues: 'ALL_NEW',
};