我想更新具有多个字段的DynamoDB项,但需要根据具体情况更改要更新的字段。
例如,一个请求可能想要更新2个字段(firstName和lastName),而另一个请求可能只想要更新1个字段(firstName)。我不知道如何在没有多个数据库请求的情况下使用aws-sdk做到这一点。
我以前想过要进行数据库查找,比较这些字段并更新更改的字段,然后更新所有字段。
但是,这感觉很hacky。
const firstName = "New Name";
const lastName = undefined; // to indicate the function was not passed this field to update
const updateParams = {
TableName: `${dynamodb.tableNamePrefix}_merchants`,
ReturnValues: 'UPDATED_NEW',
Key: {
merchantId
},
UpdateExpression:
'SET #firstName = :firstName, #lastName = :lastName',
ExpressionAttributeNames: {
'#firstName': 'firstName',
'#lastName': 'lastName'
},
ExpressionAttributeValues: {
':firstName': firstName,
':lastName': lastName
}
};
const updatedMerchant = await ddb.update(updateParams).promise();