Вставка нескольких элементов в DynamoDB с помощью Promise.All - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь вставить несколько элементов в таблицу DynamoDB, используя Promise.all(), повторно используя функцию, которая вставляет один элемент и возвращает обещание.Проблема в том, что массив возвращаемых объектов данных пуст.Этот объект данных возвращается правильно, когда я вставляю один элемент.

Я основал свою реализацию на этом AWS Post .

Моя реализация приведена ниже:

function addMessage(message) {
  const timestamp = Math.floor(new Date().getTime() / 1000);

  const params = {
    TableName: process.env.DYNAMODB_TABLE,
    Item: {
      esn: message.esn,
      utcMsgTimestamp: parseInt(message.utcMsgTimestamp),
      payload: message.payload,
      createdAt: timestamp
    }
  };

  console.log(params);

  return dynamoDb.put(params).promise();
}

function addMessages(messages) {
  // Make all of the addMessage calls immediately, this will return a rejected promise if any fail
  return Promise.all(
    messages.map(message => {
      return addMessage(message);
    })
  );
}

Мой пример модульного теста Jest находится здесь:

it.only("add multiple messages", () => {
    const dynamodb = require("../dynamodb");

    expect.assertions(0);

    const messages = [
      {
        esn: "0-700001",
        utcMsgTimestamp: "1034268516",
        payload: "0xC0560D72DA4AB2445A"
      },
      {
        esn: "0-99991",
        utcMsgTimestamp: "1034268521",
        payload: "0xA14AA1DBDB818F9759"
      }
    ];

    return dynamodb.addMessages(messages).then(dataArray => {
      dataArray.forEach(element => {
        console.log(element);
      });

      // expect(true).toBeTruthy();
    });

Любая помощь будет принята с благодарностью.

...