Возникла проблема с пакетной вставкой Dynamodb в nodejs - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть json объект "item", как показано ниже:

{ 'UID': 'A123', 'SUBSCRIBER-ID': '123', CUSTOMER: 'CUST1' }
{ 'UID': 'B234', 'SUBSCRIBER-ID': '234', CUSTOMER: 'CUST2' }
{ 'UID': 'C456', 'SUBSCRIBER-ID': '456', CUSTOMER: 'CUST3' }
{ 'UID': 'D567', 'SUBSCRIBER-ID': '678', CUSTOMER: 'CUST4' }

UID - это первичный ключ моей таблицы DynamodB. Я использую приведенный ниже код для вставки этих данных в DynamodB.

  async.each(split_arrays, function(item_data, callback) {
    const params = {
      RequestItems: {}
    };
    params.RequestItems[DYNAMODB_TABLENAME] = [];
    item_data.forEach(item => {
      for (key of Object.keys(item)) {
        // An AttributeValue may not contain an empty string
        if (item[key] === '')
          delete item[key];
      }
      var value = Object.values(item)[0]
      console.log(item)
      params.RequestItems[DYNAMODB_TABLENAME].push({
        PutRequest: {
          Item: {
          UID:value,
          ...item
          }
        }
      });
    });
docClient.batchWrite(params, function(err, res, cap) {
  console.log('done going next');
  if (err == null) {
    console.log('Success chunk #' + chunk_no);
    data_imported = true;
  } else {
    console.log(err);
    console.log('Fail chunk #' + chunk_no);
    data_imported = false;
  }
  chunk_no++;
  callback();
});

Проблема, с которой я сталкиваюсь, заключается в том, что данные вставляются, но в конце добавляется «UID» в качестве дополнительного столбца в таблице, как то так:

UID    CUSTOMER    SUBSCRIBER-ID UID

A123   CUST1       123           A123

B234   CUST2       234           B234

C456   CUST3       456           C456

D567   CUST4       678           D567
...