Запрос базы данных AWS Dynamo Db с использованием массива
Я пытаюсь создать приложение, используя AWS Dynamo Db, я хотел запросить или просканировать свою базу данных, однако я могу сканировать базу данных, используя только один параметр, но я не могу запросить базу данных, используя массив.
Например, у меня есть таблица user details
в моей базе данных, с первичным ключом UserID
, Я хочу получить несколько строк со своими UserID
хранится в массиве.
Вот код, который я пытался использовать, но он не работает для меня. Может кто-нибудь помочь мне? Благодарю.
NSArray *Array = [[NSArray alloc]initWithObjects:@"001", nil];
NSMutableDictionary *Diction = [NSMutableDictionary dictionary];
[Diction setObject:[NSString stringWithFormat:@"%@",Array]
forKey:@":val"];
AWSDynamoDBObjectMapper *dynamoDBObjectMapper =
[AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper];
UserDetails_Male *User = [UserDetails_Male new];
AWSDynamoDBScanExpression *scanExpression = [AWSDynamoDBScanExpression
new];
scanExpression.filterExpression = @"UserID = :val";
scanExpression.expressionAttributeValues = @{@":val":Array};
[[dynamoDBObjectMapper scan:[User class]
expression:scanExpression]
continueWithBlock:^id(AWSTask *task) {
if (task.error) {
NSLog(@"The request failed. Error: [%@]", task.error);
} else {
AWSDynamoDBPaginatedOutput *paginatedOutput = task.result;
for (UserDetails_Male *book in paginatedOutput.items) {
//Do something with book.
NSLog(@"Data: %@",book);
}
}
return nil;
}];
-(void)BatchReq{
AWSDynamoDBKeysAndAttributes * keysAndAttributes = [
AWSDynamoDBKeysAndAttributes new ];
AWSDynamoDBAttributeValue * attributeValue2 = [
AWSDynamoDBAttributeValue new ];
attributeValue2.SS = Array;
keysAndAttributes.keys = @[ @{ @"UserId" :
attributeValue1 }, ];
keysAndAttributes.consistentRead = @YES;
AWSDynamoDBBatchGetItemInput * batchGetItemInput = [
AWSDynamoDBBatchGetItemInput new ];
batchGetItemInput.requestItems = @{ @"DynamoDB-OM-Sample"
: keysAndAttributes };
AWSDynamoDB * awsDynamoDB = [ AWSDynamoDB defaultDynamoDB
];
[ [ awsDynamoDB batchGetItem: batchGetItemInput ]
continueWithExecutor: [ AWSExecutor mainThreadExecutor ]
withBlock: ^ id ( AWSTask * task ) {
if ( task.result ) {
NSLog ( @"it's working!!" );
}
else {
NSLog ( @"not working... " );
}
return nil;
} ];
1 ответ
Если вы установили HashKey в качестве идентификатора пользователя, используйте API BatchGetItem для массового получения всех идентификаторов в массиве.
Подробнее о BatchGetItem читайте здесь: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html