in dynamoDB I have a table that has attributes that are hyphenated. (e.g. first-name)
Now I want to update them using javascript. This is my code so far:
//create UpdateExpression and ExpressionAttributeValues
let updateExpression = "set ";
let expressionAttributeValues ={};
if (e.firstName !== null){
updateExpression = updateExpression + " "+ 'first-name'+" = :f,";
expressionAttributeValues[":f"] = e.firstName;
}
let table = "tableName";
let bpNumber = e.bpNumber;
let params = {
TableName: table,
Key: {
"bpNumber": bpNumber
},
UpdateExpression: updateExpression,
ExpressionAttributeValues: expressionAttributeValues,
ReturnValues:"UPDATED_NEW"
};
console.log("Updating the item...");
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));
}
});
However this throws me this error:
Unable to update item. Error JSON: {
"message": "Invalid UpdateExpression: Syntax error; token: \"-\", near: \"first-name\""
Is there any way around this?
Thank you for your help :)
When you use attributes that contain reserved words, spaces or special characters you have to use placeholders. Take a look at documentation.
In the updateExpression
instead of first-name
you can use, for example, #fn
placeholder and then define ExpressionAttributeNames
:
ExpressionAttributeNames: {
"#fn":"first-name"
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With