2016-05-31 10 views
0

Ich habe ein kleines Nodejs-Skript mit meiner DynamoDB verbunden und einer meiner primären Sortierschlüssel ist datetime, was in UTC dargestellt wird.Integration von AWS DynamoDB und Nodejs - Wie wird zwischen zwei Daten gefiltert?

Ich möchte die Ergebnisse nach einem bestimmten Datum und Uhrzeit filtern und habe Probleme mit meinem Filterausdruck.

var params = { 
    TableName: "realtimeusers", 
    ProjectionExpression: "brand, datetime, activeusers", 
    KeyConditionExpression: "brand = :brand", 
    FilterExpression: "datetime > :today", 
    ExpressionAttributeValues: { 
    ":brand": "BRAND A", 
    ":today": 1464705900 
    }, 
}; 

erhalte ich die Fehlermeldung:

"message": "Invalid FilterExpression: Attribute name is a reserved keyword; reserved keyword: datetime", 

Ich glaube, ich etwas in meinem Filterausdruck bin fehlt, dass ich nicht vollständig erfassen.

Kann jemand bitte helfen?

+2

Haben Sie ein Attribut DATETIME- in Ihrem Dynamo Rekord? Es ist ein reserviertes Keyword. Versuchen Sie, Expression-Attributnamen zu verwenden. Hier ist der Link zur aws-Dokumentation. http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html – Shibashis

+0

@Shibashis Ja, ich meine, bedeutet das, ich sollte es nicht haben und sollte meine Datenbank löschen und neu starten? – turtlepower

+2

Löschen Sie nichts. Verwenden Sie Expression-Attributnamen http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html#ExpressionAttributeNames – Shibashis

Antwort

1

"datetime" ist ein reserviertes Dynamo-Schlüsselwort. Die reservierten Schlüsselwörter sind in dynamischen Abfrageausdrücken nicht zulässig.

Um dies zu verwenden, verwenden Sie Expression-Attributnamen, wenn Sie nach solchen Eigenschaften suchen.

Referenz: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html#ExpressionAttributeNames