使用Promise.All将多个项目插入DynamoDB

时间:2018-06-08 18:12:27

标签: javascript amazon-web-services promise amazon-dynamodb

我尝试使用Promise.all()通过重用插入单个项并返回promise的函数将多个项插入DynamoDB表。我遇到的问题是返回的数据对象数组是空的。插入单个项目时,正确返回该数据对象。

我的实施基于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();
    });

非常感谢任何帮助。

0 个答案:

没有答案