DynamoDB batchwriteItem не помещает данные в динамическое TableName в функции Lambda - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь записать данные в разные таблицы, имя таблицы передается через запрос get.

var tableName = event.tableName.toString();

Когда я пишу в жестко закодированном tableName, он работает нормально, но когда я пишу переменную Name, он выдает ошибку.

2018-11-20T21: 09: 31.532Z 928e237c-ed08-11e8-a312-539d290e67fc {"errorMessage": "Запрошенный ресурс не найден", "errorType": "ResourceNotFoundException", "stackTrace": ["Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:48:27)","Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105: 20) "," Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10)","Request.emit (/ var / runtime / node_modules / aws-sdk / lib/request.js:683:14)","Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)","AcceptorStateMachine.runTo (/ var / runtime / node_modules)/aws-sdk/lib/state_machine.js:14:12)","/var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10","Request. (/ var / runtime / node_modules)/ AWS-SDK / Liб / request.js: 38: 9) "" запрос.(/var/runtime/node_modules/aws-sdk/lib/request.js:685:12)","Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:115:18)"]} END RequestId: 928e237c-ed08-11e8-a312-539d290e67fc ОТЧЕТ RequestId: 928e237c-ed08-11e8-a312-539d290e67fc Продолжительность: 124,41 мс Продолжительность счета: 200 мс Размер памяти: 1024 МБ Макс. Используемая память: 33 МБ

Вот код:

var params = {
RequestItems: {
    tableName :  [
   {
     PutRequest: {
        "Item" : {
        "indexNumber":{
            "N": r1index
        },
         "DateandTime" :{
          "S": DnT1  
        } ,
        "roadId" :{
          "N": id
        },
        "x1_axis":{
           "S": x11
        },
        "y1_axis":{
            "S":  y11
        },
        "z1_axis":{
            "S": z11
        },
        "x2_axis":{
           "S": x21
        },
        "y2_axis":{
            "S":  y21
        },
        "z2_axis":{
            "S": z21
        },
        "latitude":{
            "S": lat1
        },
        "longitude":{
            "S":lng1
        }
    }
     }
   },
   {
     PutRequest: {
        "Item" : {
        "indexNumber":{
            "N": r2index
        },
        "DateandTime" :{
          "S": DnT2 
      } ,
        "roadId" :{
          "N": id
        },
        "x1_axis":{
           "S": x12
        },

        "y1_axis":{
            "S":  y12
        },
        "z1_axis":{
            "S": z12
        },
        "x2_axis":{
           "S": x22
        },
        "y2_axis":{
            "S":  y22
        },
        "z2_axis":{
            "S": z22
        },
        "latitude":{
            "S": lat2
        },
        "longitude":{
            "S":lng2
        }
    }
     }
   },
          {
     PutRequest: {
       "Item" : {
        "indexNumber":{
            "N": r3index
        },
        "DateandTime" :{
          "S": DnT3  
        } ,
         "roadId" :{
          "N": id
        },
        "x1_axis":{
           "S": x13
        },
        "y1_axis":{
            "S":  y13
        },
        "z1_axis":{
            "S": z13
        },
        "x2_axis":{
           "S": x23
        },
        "y2_axis":{
            "S":  y23
        },
        "z2_axis":{
            "S": z23
        },
        "latitude":{
            "S": lat3
        },
        "longitude":{
            "S":lng3
        }
    }
     }
   }
]

}};

1 Ответ

0 голосов
/ 21 ноября 2018

Я думаю, что ваш JSON неверен.Когда вы определяете свой объект RequestItems как

RequestItems: { tableName: [...] }

, вы фактически жестко кодируете строку «tableName» как атрибут, а не переменную с именем «tableName».Вот почему нет таблицы с таким названием.

Решение es6 заключается в следующем:

RequestItems: { [tableName]: [...] }

Старомодное решение заключается в следующем:

var RequestItems = {};
RequestItems[tableName] = [...];

См. Как установить имя свойства объекта JS из переменной для справки

Редактировать:

Для более полного решения попробуйте:

var params = {};
params.RequestItems = {};
params.RequestItems[tableName] = [...]
...