Я использую AWS DynamoDB DocumentClient для запросов к моим таблицам DynamoDB. В моих таблицах у меня есть свойство, называемое «_id», которое содержит уникальный идентификатор для каждой записи. Когда я пытаюсь выполнить запрос на запись на основе этого идентификатора, я получаю сообщение об ошибке «Неверное выражение KeyConditionExpression: ошибка синтаксиса: токен: \" _ \ ", рядом: \" _ id \ "". Код, который делает этот запрос, приведен ниже.DynamoDB - Почему я не могу использовать «_» в качестве префикса в выражении ключевого условия?
function findById(id) {
//Build query
var params = {};
params.TableName = "recordDev";
params.IndexName = "_id";
params.KeyConditionExpression = '_id = :id';
params.ExpressionAttributeValues = {
':id': id
};
return DynamoDB
.query(params).promise()
.then(function(records) {
return records.Items[0];
})
.catch(function(error) {
return Promise.reject(error);
});
};
Есть ли что-то, что мне не хватает в отношении использования знака «_» при построении параметров запроса для DynamoDB? Я попытался оглянуться на подобные ошибки, но не смог найти ни одного, подобного моему сценарию.
Это сработало! Есть ли причина, по которой вы знаете, почему она не просто автоматически работает без использования ExpressionAttributeNames для вещей с «_»? – tbergen1
Действительно не знаю. Скорее всего, это связано с их механизмом синтаксического анализа. Я думаю, что в случае простых имен он может работать без указания ExpressionAttributeNames, но не совсем уверен. – gkatzioura