Когда вы используете KeyConditionExpression
выражение, которое означает, что вы используете Query
на GSI
.
Если date
- это ключ раздела, а не ключ сортировки. Тогда у вас есть проблема:
Вы не определяете IndexName
в своих параметрах.
В операции Query нельзя выполнить сравнительный тест (<,>, BETWEEN, ...) для ключа раздела. Условие должно выполнить проверку на равенство (=) для одного значения ключа секции и, необязательно, один из нескольких сравнительных тестов для одного значения ключа сортировки.
Например:
KeyConditionExpression: 'HashKey = :hkey and RangeKey > :rkey'
Вы хотите получать transactions
месяца? Я думаю, вам нужно создать GSI с: year-month
- это PrimaryKey (например: 2018-01, 2018-02), day-createdAt
- это SortedKey (например: 28-1535429111358, ...)
Запрос будет похож на выше:
const params = {
TableName: request.env.tableName,
IndexName: 'MONTH-DAY-IDX',
KeyConditionExpression: 'year-month = :val1',
ExpressionAttributeValues: {
':val1': {
S: year +'-' + month
},
}
}