Как получить предмет из таблицы по attirbute с помощью Dynamodb - PullRequest
0 голосов
/ 19 июня 2020

Я хочу получить элементы из таблицы, где атрибут равен значению, которое я указал с помощью dynomodb.

Эквивалент SQL:

SELECT * FROM tokens where type='app_access_token`

Код:

    copnst db = new Dynamodb.DocumentClient(credentials);

    const params = {
      TableName: 'TOKEN',
      Key: {
        type: 'app_access_token'
      }
    };

    const response = db.get(params).promise();

Но я считаю, что это позволит мне получить доступ только через первичный ключ, это правильно?

Нет SQL Структура WorkBench

enter image description here

1 Ответ

0 голосов
/ 19 июня 2020

DynamoDB эквивалент SELECT * - метод scan. Они оба сканируют все записи таблицы (и, следовательно, медленные и дорогие).

Подробнее о методе scan можно узнать в Руководстве разработчика Amazon или в этом полезная ветка .

Если можете, я бы использовал GSI с атрибутом type в качестве ключа, но если вы все же хотите сделать это с помощью метода scan, вот как вы это сделаете:

const params = {
  TableName : 'TOKEN',
  FilterExpression : 'type = :type',
  ExpressionAttributeValues : {':type' : 'app_access_token'}
};

const documentClient = new AWS.DynamoDB.DocumentClient();

const response = documentClient.scan(params).promise();

AWS JavaScript SDK - DocumentClient Scan ()

...