Создание параметров запроса для batchWriteItem (params, function () {}) в javaScript - PullRequest
0 голосов
/ 23 ноября 2018

Я пытался создать параметры для batchWriteItem (), когда я создаю их таким образом, это прекрасно работает.

var params = {
RequestItems: {
    'tableNameXYZ' :  [ //hardcoded
   {
     PutRequest: {
        "Item" : {
        "indexNumber":{
            "N": xyz
        },...
       }
      },
     PutRequest: {
        "Item" : {
        "indexNumber":{
            "N": xyz1
        },...
       }
      }
  }
 ]
};

Но я не могу работать с ним, когда у меня есть имя таблицы в переменной:

var tableName = 'tableNameXYZ';
var params = {
RequestItems: {
    tableName :  [ 
   {
     PutRequest: {
        "Item" : {
        "indexNumber":{
            "N": xyz
        },...
       }
      },
     PutRequest: {
        "Item" : {
        "indexNumber":{
            "N": xyz1
        },...
       }
      }
  }
 ]
};

Очевидно, что это не сработало бы, так как я играл грубо с объектом JSON здесь.Тогда я попробовал это:

var params = {};
params.RequestItems[tableName] = [
   {
     PutRequest: {
        "Item" : {
        "indexNumber":{
            "N": xyz
        },...
       }
      },
     PutRequest: {
        "Item" : {
        "indexNumber":{
            "N": xyz1
        },...
       }
      }
  }
 ];

Теперь это выдает мне ошибку вроде:

 TypeError: Cannot set property 'tableNameXYZ' of undefined
at exports.handler (/var/task/index.js:181:32)

Может ли кто-нибудь указать мне на мою ошибку?Спасибо.

1 Ответ

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

Вы получили эту ошибку, потому что:

var params = {};

Создает пустой объект (называемый params) без свойств, но:

params.RequestItems[tableName] = [ // ...rest of code

Пытается присвоить params.RequestItems.the-value-of-tableName.

Но params не имеет свойства с именем RequestItems, поэтому params.RequestItems не определено.И это TypeError, чтобы попытаться установить значение свойства (в данном случае the-value-of-tableName) на undefined.

Чтобы исправить это, используйте:

var params = {};
params.RequestItems = {}; // assign RequestItems an empty object.
params.RequestItems[tableName] = [ // ...rest of code.
...