我想获取许多videoIds的项目,而不是像这段代码中只有一个视频项目?有没有办法从索引中查询多个项目?
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)
你桌子的架构是什么样的? 您是否为表启用了哈希键和范围键?如果您没有任何范围键,则每个哈希键只有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
});
}];
在上面的代码段中,它会尝试查找符合&#39;&lt;&#39;
条件的艺术家的所有相册