2017-02-26 2 views
0

nicht festlegen Ich verwende die Amazon AWS DynamoDB für Android, jedoch gibt es keine Möglichkeit für mich, den KeyConditionExpression für eine Abfrage festzulegen.Kann KeyConditionExpression-Parameter in DynamoDb für Android

Siehe [http://docs.aws.amazon.com/AWSAndroidSDK/latest/javadoc/com/amazonaws/mobileconnectors/dynamodbv2/dynamodbmapper/DynamoDBQueryExpression.html][1]. In der DynamoDBQueryExpression-Klasse fehlt eine withKeyConditionExpression() -Methode.

Ich versuche eine Abfrage gegen Dynamodb-Tabelle zu machen, aber es gibt keine Möglichkeit für mich, die Schlüsselzustandswerte festzulegen.

Antwort

0

Die keyConditionExpression wird wie folgt festgelegt:

AWSDynamoDBQueryExpression *queryExpression = [AWSDynamoDBQueryExpression new]; 
queryExpression.keyConditionExpression = @"#bookId = :bookId"; 
queryExpression.expressionAttributeNames = @{ 
              @"#bookId" : @"bookId", 
              }; 
queryExpression.expressionAttributeValues = @{ 
               @":bookId" : self.selectedBookId, 
               }; 
0

ich das ähnliche Problem für meine Applikation für Android angetroffen, wo .withKeyConditionExpression() Methode einen Fehler gab. Stattdessen habe ich folgendes verwendet:

TestTable object = new TestTable();
object.setHashKeyValue ("12345"); // Setze den Wert für HashKey

String queryString = "soverflow";

Zustand rangeKeyCondition = new Zustand() .withComparisonOperator (ComparisonOperator.BEGINS_WITH.toString()) .withAttributeValueList (new Attributevalue() withs (queryString.toString()).);

DynamoDBQueryExpression newQueryExpression = new DynamoDBQueryExpression() .withHashKeyValues ​​(Objekt)
.withRangeKeyCondition ("Attributename", rangeKeyCondition)
.withConsistentRead (false);

PaginatedQueryList Ergebnis = mapper.query (TestTable.class, newQueryExpression);

Der Punkt ist, dass, wenn Sie eine Tabelle abfragen, der HashKey und der RangeKey die Partitionsschlüssel der Tabelle sein werden. Wenn Sie einen Index abfragen, sind der Hash - Schlüssel und der Bereichsschlüssel die Partitionsschlüssel des Index.

Stellen Sie sicher, dass Sie die Anmerkungen ordnungsgemäß in der Tabellenklasse verwenden und den Index ARN der Richtlinie zur Autorisierung hinzufügen.

1

Leider keyConditionExpressionnicht mehr existieren für Java/Android. Ich habe viel Zeit verschwendet, weil es immer noch für Objective-C/iOS existiert.

Und da alle AWS-Dokumente immer noch darauf verweisen, dachte ich, dass ich einen Fehler gemacht habe. Sobald ich den neuen Code geschrieben und funktioniert habe, werde ich den Ersatz hier dokumentieren.