Операция сканирования AWS DynamoDB работает со сканированием на уровне класса, но не сканированием устройства записи документов - PullRequest
0 голосов
/ 24 октября 2018

Следующие параметры возвращают ожидаемый результат в операции сканирования с использованием dynamoDB.scan(params, function);

const dynamoDB = new AWS::DynamoDB();
let params = {
    TableName: ACCOUNT_USAGE_TABLE,
    ExpressionAttributeValues: {
        ":start_date": {
            S: new Date(event.start_date).toISOString(),
        },
        ":end_date": {
            S: new Date(event.end_date).toISOString()
        }
    },
    ExpressionAttributeNames: {
        "#usage_date": "date",
    },
    FilterExpression: "#usage_date BETWEEN :start_date AND :end_date",
    ExclusiveStartKey: event.LastEvaluatedKey
};

Но предыдущие параметры не работают при использовании dynamoDB.documentClient.scan(params, function) с,

ValidationException: Invalid FilterExpression: Incorrect operand type for operator or function; operator or function: BETWEEN, operand type: M

Есть идеи, почему?

1 Ответ

0 голосов
/ 24 октября 2018

Конечно, ответ смотрел мне прямо в лицо.В случае, если кто-то еще сталкивается с ним и не видит его немедленно.

Клиент документов DynamoDB в javascript использует типы javascript и поэтому видит объекты start_date и end_date ([object]) или operand type: M.

Все, что мне нужно было сделать, это изменить ExpressionAttributeValues на

ExpressionAttributeValues: {
    ":start_date": new Date(event.start_date).toISOString(),
    ":end_date": new Date(event.end_date).toISOString()
},

И вуаля, это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...