简体   繁体   English

使用Array查询AWS Dynamo Db数据库

[英]Query AWS Dynamo Db Data base using an Array

I'm trying to build an app using AWS Dynamo Db, I wanted to query or scan my database, however I'm able to scan the database using just one parameter, but I'm unable to query the database using an array. 我正在尝试使用AWS Dynamo Db构建应用程序,我想查询或扫描我的数据库,但是我只能使用一个参数扫描数据库,但我无法使用数组查询数据库。

For example, I have a table user details in my database, with a primary key UserID . 例如,我的数据库中有一个表user details ,主键为UserID I want to get a few rows with their UserID stored in an array. 我想得到几行,其UserID存储在一个数组中。

Here is the code I tried using but it's not working for me. 这是我尝试使用的代码,但它不适合我。 Can someone please help me out? 有人可以帮帮我吗? Thanks. 谢谢。

 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;
               } ];

If you have set the HashKey as the user Id, use the BatchGetItem API to get all the ids in the array in bulk. 如果您已将HashKey设置为用户ID,请使用BatchGetItem API批量获取阵列中的所有ID。

See more about BatchGetItem here: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html 在此处查看有关BatchGetItem的更多信息: http ://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM