У меня проблема с обновлением в DynamoDB, при выполнении обновления в Dynamo мне пишет, что я не могу использовать ключевое слово
"message": "Value provided in ExpressionAttributeNames unused in expressions: keys: {#keyid}", "code": "ValidationException", "time": "2022-05-06T00:24:03.502Z",
При использовании ExpressionAttributeNames я должен связать ключ с другим именем «Ключ», но в таблице его идентификатор называется ключом, и он генерирует предыдущую ошибку при обновлении этого моего кода.
function updateUser(key, sortkey, dateFiling) {
try {
let params = {
TableName: env.getEnv(CTE.User),
Key: { "#keyid": key , "sortkey": sortkey },
UpdateExpression: "set dateFiling = :dateFiling",
ExpressionAttributeNames: { '#keyid': 'key' },
ExpressionAttributeValues: { ":dateFiling": dateFiling }
};
await db.updateItem(params);
console.info(params);
}
catch (error) {
console.info('Error in updateUser %j:', error);
}
}
я сомневаюсь именно в ExpressionAttributeNames, поскольку он не использует конверт с идентификатором ключа для ссылки на ключ и не имеет проблем с использованием зарезервированного слова. Может ли кто-нибудь помочь мне. пожалуйста
Аргумент Key
принимает зарезервированные ключевые слова:
Key: { "key": key , "sortkey": sortkey },
Зарезервированные ключевые слова запрещены в выражения, например UpdateExpression
. DynamoDB жалуется, что вы не используете ExpressionAttributeNames
в выражении, и это правда. Убери это.
Английский да, как есть. удаление ExpressionAttributeNames работало нормально.