Ich verwende DynamoDB UpdateItem, um Datensätze in meiner Datenbank zu aktualisieren. Eine grundlegende Funktion wie diese funktioniert für mich.DynamoDB: UpdateItem, Ignoriere Nullwerte in ExpressionAttributeValues
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));
}
});
Aber ...
Wenn ich möchte nur ein Attribut aktualisieren, den Namen, die wie folgt aus:
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"
};
Es gibt mir die Fehlermeldung, dass
ExpressionAttributeValues kann nicht NULL sein.
Ich weiß, dass ich dynamisch den UpdateExpression
String durch Überprüfung für Werte in Benutzern, wie diese produzieren könnte:
for (var key in user) {
if (user.hasOwnProperty(key)) {
...add to DynamicUpdateExpression..
}
}
aber gibt es eine Möglichkeit, dass ich sagen kann, updateItem die Nullwerte zu ignorieren und nur Aktualisieren Sie die name
?
Dies ist ein großer Vorschlag. Vielen Dank. Ich werde nur noch einen Tag warten, um zu sehen, ob jemand anders einen Weg gefunden hat, wenn nicht, dann werde ich diese Antwort ausschließen. – inspired
Haben Sie etwas dazu gefunden? Ich konnte nichts finden. –
Ich habe nichts gefunden. Ich werde es akzeptieren. – inspired