Запрос БД AWS DYNAMO с несколькими условиями - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь получить детали из динамо-базы данных, используя приведенный ниже запрос в этом ДОМЕНЕ, а СЕРВИС - это просто ключ (не первичный ключ)

let params = {
    TableName: asset_table,
    ConsistentRead: true,
    ProjectionExpression: 'ID,SERVICE',
    KeyConditionExpression: "DOMAIN = :service_name AND SERVICE EQ :service_domain",
    ExpressionAttributeValues: {
         ":service_name": {"S":service },
         ":service_domain": {"S":domain}
    }
};
docClient.scan(params, (err, data) => {
    if (err) {
        onComplete(err);
    } else {
        console.log(data);
        onComplete(null, {
            data
        });
    }
});

это дает ошибку, как указано ниже

{
"message": "ExpressionAttributeValues can only be specified when using expressions: FilterExpression is null",
"code": "ValidationException",
"time": "2019-01-09T09:47:09.180Z",
"requestId": "0G3C02E6251S2H1IQ2LQUTN04JVV4KQNSO5AEMVJF66Q9ASUAAJG",
"statusCode": 400,
"retryable": false,
"retryDelay": 8.070453867451622
 }

1 Ответ

0 голосов
/ 09 января 2019

Метод scan не принимает KeyConditionExpression в params. Вместо этого вы должны использовать FilterExpression param.

Ошибка говорит вам об этом, поскольку она может видеть ваши ExpressionAttributeValues, но не FilterExpression, чтобы использовать их.

Согласно документации AWS - Работа со сканированием :

Синтаксис для выражения фильтра идентичен синтаксису условия выражение. Выражения фильтра могут использовать одни и те же компараторы, функции и логические операторы как выражение условия. Для большего информация, Условные выражения .

Оформление документов DDB Docs здесь для получения полной информации о том, как использовать метод scan.

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