2016-05-31 2 views
0

У меня есть маленький скрипт nodejs, подключенный к моему DynamoDB, и один из моих основных ключей сортировки - это datetime, который представлен в UTC.Интеграция AWS DynamoDB и Nodejs - как фильтровать между двумя датами?

Я хотел бы отфильтровать результаты на определенную дату и время, и у меня возникли проблемы с моей фильтрацией.

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

Я получаю сообщение об ошибке:

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

Я думаю, что я что-то в моем выражении фильтра, что я не в полной мере ухватить отсутствует.

Может ли кто-нибудь помочь?

+2

У вас есть атрибут DATETIME в вашей динамо записи? Это зарезервированное ключевое слово. Попробуйте использовать имена атрибутов Expression. Вот ссылка на документацию aws. http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html – Shibashis

+0

@Shibashis Да, это значит, что я не должен иметь его и должен удалить мою базу данных и перезапустить? – turtlepower

+2

Не удаляйте ничего. Использовать имена атрибутов выражения http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html#ExpressionAttributeNames – Shibashis

ответ

1

«datetime» - это зарезервированное ключевое слово dynamo. Зарезервированные ключевые слова не допускаются в выражениях запроса dynamo.

Способы использования имен атрибутов Expression при запросе таких свойств.

Ссылка: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html#ExpressionAttributeNames

Смежные вопросы