В моем проекте реализована архитектура с одной таблицей. У меня возникла проблема с использованием методов сканирования и запросов DynamoDB, потому что в моей БД я получил несколько элементов о различных модулях, например: login, register..etc. Так что Ключ не одинаков в каждом предмете. Я только установил KeyType для идентификации элемента в yml. Я не знаю, как использовать метод сканирования и запроса в одной таблице арки.
Если я использую метод сканирования, я получил весь элемент из базы данных. Без какого-либо выражения или условия например: FilterExpression, KeyConditionExpression
my yaml file ex:
Resources:
TABLENAMEDynamoDBTable:
Type: 'AWS::DynamoDB::Table'
Properties:
AttributeDefinitions:
-
AttributeName: id
AttributeType: S
KeySchema:
-
AttributeName: id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TableName: TABLENAME
var params = {
TableName: 'TABLENAME'
};
dynamodb.scan(params, function(err, data) {
if (err) ppJson(err); // an error occurred
else ppJson(data); // successful response
});
Вывод: Item: [{...}, ...]
, но если я используювыражение или условие, через которое будет проходить ошибка. не только сканирование. то же самое в запросе также
var params = {
TableName: 'TABLENAME',
Limit: 10,
FilterExpression:'#user =:val',
ExpressionAttributeNames: {
"#user": "status",
},
ExpressionAttributeValues: {
":val": 'active'
}
};
dynamodb.scan(params, function(err, data) {
if (err) ppJson(err); // an error occurred
else ppJson(data); // successful response
});
Я ожидал вывода
Item:[{status:'active',..},{status:'active',..},...]
, но получил эту ошибку.
"message":"There were 7 validation
errors: InvalidParameterType: Expected params.ExpressionAttributeValues[':val'] to be a structure
UnexpectedParameter: Unexpected key '0' found in params.ExpressionAttributeValues[':val']
UnexpectedParameter: Unexpected key '1' found in params.ExpressionAttributeValues[':val']
UnexpectedParameter: Unexpected key '2' found in params.ExpressionAttributeValues[':val']
UnexpectedParameter: Unexpected key '3' found in params.ExpressionAttributeValues[':val']
UnexpectedParameter: Unexpected key '4' found in params.ExpressionAttributeValues[':val']
UnexpectedParameter: Unexpected key '5' found in params.ExpressionAttributeValues[':val']... etc
Таким образом, любой может решить эту проблему и объяснитьпроектирование одной таблицы, сканирование и использование запроса.