DynamoDB: UpdateItem, Ignorar valores nulos en ExpressionAttributeValues
Estoy usando DynamoDBUpdateItem para actualizar registros en mi base de datos. Una función básica como esta está funcionando para mí.
var user = {
userID: '123213',
name: 'John Doe',
age: 12,
type: 'creator'
};
var params = {
TableName:table,
Key:{
"UserID": user.userID
},
UpdateExpression: "set Name = :r, Age=:p, Type=:a",
ExpressionAttributeValues:{
":r":user.name,
":p":user.age,
":a":user.type
},
ReturnValues:"UPDATED_NEW"
};
docClient.update(params, function(err, data) {
if (err) {
console.error("Unable to update item. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("UpdateItem succeeded:", JSON.stringify(data, null, 2));
}
});
Pero...
Si solo quisiera actualizar un atributo, el nombre, así:
var user = {
userID: '123213',
name: 'John Smith'
};
var params = {
TableName:table,
Key:{
"UserID": user.userID
},
UpdateExpression: "set Name = :r, Age=:p, Type=:a",
ExpressionAttributeValues:{
":r":user.name,
":p":user.age,
":a":user.type
},
ReturnValues:"UPDATED_NEW"
};
Me da el error de que
ExpressionAttributeValues no puede ser NULL.
Sé que podría producir dinámicamenteUpdateExpression
Cadena al verificar los valores en el usuario, así:
for (var key in user) {
if (user.hasOwnProperty(key)) {
...add to DynamicUpdateExpression..
}
}
pero ¿hay alguna manera de decirle a updateItem que ignore los valores nulos y solo actualice elname
?