Как извлечь все элементы из таблицы DynamoDB с помощью Node.js ?

#node.js #amazon-dynamodb

#node.js #amazon-dynamodb

Вопрос:

У меня есть следующий код node js, в котором должны быть перечислены все элементы из таблицы DynamoDB,

 import * as dynamoDbLib from "../../libs/dynamodb-lib";
import { success, failure } from "../../libs/response-lib";

export async function main(event, context) {
  const params = {
    TableName: "brands",

    KeyConditionExpression: "brandId = :brandId",
    ExpressionAttributeValues: {
      ":brandId": ''
    }
  };

  try {
    const result = await dynamoDbLib.call("query", params);
    return success(result.Items);
  } catch (e) {
     console.log(e);
     return failure({ status: false });
  }
}
  

Идентификатор находится в формате uuid, который при вставке из моего узла js был импортирован с помощью:

 import uuid from "uuid";
  

затем вставляется в таблицу следующим образом:

 brandId: uuid.v1()
  

Теперь, когда я запрашиваю элементы в таблице, я могу получить только одну запись тогда и только тогда, когда я жестко закодировал uuid записи в значении атрибута expression (должен быть указан либо параметр keyconditionsexpression, либо KeyConditionExpression). Итак, я подумал о добавлении регулярного выражения для сопоставления всех uuid, мое регулярное выражение было скопировано из некоторых решений в Интернете, но это не сработало, это было похоже на следующее:

 [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
  

и

 b[0-9a-f]{8}b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-b[0-9a-f]{12}b
  

и я пробовал другие примеры, но ни один из них не сработал, правильно ли добавлять регулярное выражение для получения всех элементов, и если да, то какое регулярное выражение для этого подходящее?

Комментарии:

1. Вы решили проблему?

Ответ №1:

Используйте операцию сканирования, чтобы получить все элементы в таблице.

Из руководства разработчика AWS:

Метод сканирования считывает каждый элемент в таблице и возвращает все данные в таблице. Вы можете предоставить необязательное filter_expression, чтобы возвращались только элементы, соответствующие вашим критериям. Однако фильтр применяется только после сканирования всей таблицы.

Комментарии:

1. Зачем использовать операции сканирования?

2. Операции сканирования были бы последним средством из-за их стоимости и производительности, пожалуйста, проконсультируйтесь docs.aws.amazon.com/amazondynamodb/latest/developerguide /…

3. Вопрос конкретно заключается в попытке извлечь все элементы из таблицы. Сканирование — это правильный способ сделать это….