Я хочу написать функцию, которая обновляет данный параметр в dynamodb.node.js, передающий параметр DynamoDB updateItem метод
Например, в таблице dynamodb, где каждый идентификатор пользователя является ключом у меня есть ценности, как
{ "categoryname": "a", "skillState": "a", "skipcount": 1, "userId": "amzn1.ask.account.xxx” }
Я хочу установить "categoryname": "b"
хотя бы 10-15 полей, как это так, Я не хочу жесткий код имя поля.
function (userId,itemToUpdate,itemValue,callback) {
var updateExpressionString = "SET #"+itemToUpdate+" =:val1";
var expressionAtt = '#'+itemToUpdate + '';
console.log(updateExpressionString)
console.log(expressionAtt)
this.dynamodb.updateItem({
TableName: constants.dynamoDBDetailTableName,
Key: {
userId: {
S: userId
}
},
UpdateExpression: updateExpressionString,
ExpressionAttributeNames : {
expressionAtt : itemToUpdate
},
ExpressionAttributeValues : {
':val1': {'S':itemValue}
}
}, function (err, data) {
if (err) {
console.log(err)
console.log('Error ')
} else if (data.Item === undefined) {
}else {
console.log(data)
}
});
}
В ExpressionAttributeNames:
{ValidationException: ExpressionAttributeNames содержит недопустимый ключ: ошибка синтаксиса; key: "expressionAtt"
Эта ошибка, очевидно, предполагает, что expressionAtt
является ключом, хотя это локальная переменная.
Я новичок в Node.js, как можно передать локальную переменную в к ExpressionAttributeNames
и ExpressionAttributeValues