以下固定表达式和值需要更改为动态:
function update(args) {
const params = {
UpdateExpression: 'set firstName = :firstName, lastName = :lastName, sex = :sex',
// values map to UpdateExpression
ExpressionAttributeValues: {
':firstName': args.firstName,
':lastName': args.lastName,
':sex': args.sex
}
};
// db specific code, not relevant
}
目前仅适用于固定参数,例如:
update({firstName: 'Joe', lastName: 'Doe', sex: 'M'}
我需要UpdateExpression
和ExpressionAttributeValues
动态更改或多或少的参数,例如:
args
也有height: 190
height = :height
添加到UpdateExpression
(和逗号)':height': args.height
添加到ExpressionAttributeValues
我应该如何解析该表达式以及如何处理逗号?
表达式字符串生成看起来很尴尬,我的逗号也有问题。
const args = {
id: 'id-123',
firstName: 'John',
lastName: 'Doe',
updated: 1491111234
};
function update(args) {
console.log('===');
expression = 'set ';
values = {};
for (let variable in args) {
// expression string
let str = `${variable} = :${variable}, `;
console.log(str);
expression = expression.concat(str);
// values object
values[`:${variable}`] = args[variable];
}
console.log('---');
console.log('UpdateExpression:', expression);
console.log('ExpressionAttributeValues:', values);
console.log('===');
}
update(args);

答案 0 :(得分:1)