2017-05-14 1 views
1

Je tente de créer une application à l'aide d'AWS Dynamo Db, je voulais interroger ou analyser ma base de données, mais je suis capable de numériser la base de données en utilisant un seul paramètre, mais je suis incapable d'interroger la base de données en utilisant un tableau. Par exemple, j'ai une table user details dans ma base de données, avec une clé primaire UserID. Je veux obtenir quelques lignes avec leur UserID stockées dans un tableau.Requête base de données AWS Dynamo Db à l'aide d'un tableau

Voici le code que j'ai essayé d'utiliser mais cela ne fonctionne pas pour moi. Quelqu'un peut-il m'aider s'il vous plaît? Merci.

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

Répondre

0

Si vous avez défini le HashKey comme l'ID utilisateur, utilisez l'API BatchGetItem pour obtenir tous les ids dans le tableau en vrac.

En savoir plus sur BatchGetItem ici: http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html

+0

Hey merci beaucoup pour répondre, je modifié ma question et ajoute la fonction BatchReq, serait que le travail de code.? ou devrait utiliser une boucle for pour créer plusieurs attributs et les passer en tant que clés. – Arnvfx

+0

Je connais peu de choses sur Objective-C ou Swift. Donc, je ne peux pas être en mesure de vous aider avec le code. Je peux vous indiquer la bonne approche. –

+1

Hey l'opération par lots a fonctionné parfaitement, merci – Arnvfx