2017-01-30 3 views
0

ich eine Abfrage durchzuführen versuche, wo ich alle Elemente abrufen möchten, die Höhe und die Breite zwischen 2 definierten Werten wie dieses:AWS DynamoDB Abfrage mit Anfangs- und Endwert

let queryExpression = AWSDynamoDBQueryExpression() 

queryExpression.filterExpression = ":widthSmall < #width < :width AND :heightSmall < #height < :height" 
queryExpression.keyConditionExpression = "#addedByType = :addedByType" 
queryExpression.expressionAttributeNames = ["#addedByType": "addedByType", "#width": "widthSmall","#height": "heightSmall","#width": "width","#height": "height"] 
queryExpression.expressionAttributeValues = [":addedByType": "APPUSER", ":widthSmall": 50, ":heightSmall": 50, ":width": 100, ":height": 100] 

queryExpression.scanIndexForward = false 
queryExpression.limit = 200 

Dies obwohl die folgende werfen Fehler wegen der AusdruckAttributeNames

Was wäre der richtige Weg, dies zu überprüfen?

Antwort

0

Ok so nach ziemlich viel Versuch und Irrtum habe ich herausgefunden, was ich falsch mache und kam mit folgendem Ergebnis:

queryExpression.filterExpression = ":widthSmall < #width1 AND #width < :width AND :heightSmall < #height1 AND #height < :height" 
queryExpression.keyConditionExpression = "#addedByType = :addedByType" 
queryExpression.expressionAttributeNames = ["#addedByType": "addedByType", "#width1": "width","#height1": "height", "#width": "width", "#height": "height"] 
queryExpression.expressionAttributeValues = [":addedByType": "APPUSER", ":widthSmall": 50, ":heightSmall": 50, ":width": 101, ":height": 101] 

Das Problem war, dass ich Referenzierung zweimal den gleichen Schlüssel in der Wörterbuch