2016-10-04 34 views
0

我想獲得許多videoIds的項目,而不是像這樣的代碼只有一個視頻項目?有沒有辦法從索引中查詢多個項目?如何查詢DynamoDB(iOS)中的多個項目?

AWSDynamoDBObjectMapper *objectMapper = [AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper]; 
AWSDynamoDBQueryExpression *queryExpression = [AWSDynamoDBQueryExpression new]; 

queryExpression.indexName = @"getVideoItem"; 
queryExpression.keyConditionExpression = @"#id = :id"; 
queryExpression.expressionAttributeNames = @{ 
              @"#id" : @"id", 
              }; 
queryExpression.expressionAttributeValues = @{ 
               @":id" : videoId, 
               }; 
__weak typeof(self) weakSelf = self; 

[objectMapper query:[PublicVideos class] 
     expression:queryExpression 
    completionHandler:^(AWSDynamoDBPaginatedOutput * _Nullable response, NSError * _Nullable error) { 
     if (!error) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       if ([weakSelf.delegate respondsToSelector:@selector(ServerConnectionHandlerVideoListRecevied:)]) { 
        [weakSelf.delegate ServerConnectionHandlerVideoListRecevied:response.items]; 
       } 
      }); 
     } 
    }]; 

回答

0

表的模式是什麼樣的? 你有沒有爲你的表啓用散列鍵和範圍鍵?如果您沒有任何範圍鍵,則每個散列鍵只有1個條目,並且您的查詢將只返回一行。

如果你有兩個哈希鍵和範圍鍵,您查詢的是這樣的:

AWSDynamoDBObjectMapper *objectMapper = [AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper]; 
AWSDynamoDBQueryExpression *queryExpression = [AWSDynamoDBQueryExpression new]; 
queryExpression.indexName = @"Artist-Album-index"; 
queryExpression.keyConditionExpression = @"#artist = :artist AND #album < :album"; 
queryExpression.expressionAttributeNames = @{ 
               @"#artist" : @"Artist", 
               @"#album" : @"Album", 
               }; 
queryExpression.expressionAttributeValues = @{ 
                @":artist" : @"valuetosearch", 
                @":album" : @"valuetosearch", 
                }; 
[objectMapper query:[Song class] 
      expression:queryExpression 
     completionHandler:^(AWSDynamoDBPaginatedOutput * _Nullable response, NSError * _Nullable error) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       // handle response 
      }); 
     }]; 

在這裏,在上面的代碼片段,它會嘗試尋找所有專輯匹配的「<」的狀態的藝術家