【发布时间】:2017-06-11 22:37:10
【问题描述】:
我正在运行一个用 Node.js 编写的 AWS Lambda 服务,它与 DynamoDB 数据库交互。我的一种方法在 DynamoDB 上执行更新 (AWS.DynamoDB.DocumentClient().update) 以更新特定项目。但是,我的问题是,当我尝试更新一个项目并且该项目不存在时,更新方法会将这个新项目添加到我的表中。这种行为也是documentation 中描述的默认行为。
如果新项目尚不存在,我不希望我的方法创建它。我希望只有在记录存在时才进行更新。如果它不存在,它必须什么都不做。我如何实现这一目标?我希望我应该能够使用 ConditionalExpression 来实现这一点,但我在这方面所做的尝试并没有成功。
下面给出了我发送到更新函数的当前参数示例。在此示例中,我想更新具有 userId 123 的用户,并且我想将此用户的 isActive 字段设置为“false”(但我只想在用户 123 实际存在时这样做!)
const params = {
TableName: 'users',
Key: {
userId: '123',
},
ExpressionAttributeValues: {
':isActive': 'false'
},
UpdateExpression: 'SET isActive = :isActive',
ReturnValues: 'ALL_NEW',
};
【问题讨论】:
-
如果有人想知道相反的情况:“如果密钥不存在,我如何使用 UpdateItem 创建新项目?”,那么只需使用 OP 发布的内容
标签: amazon-dynamodb