在 javaScript 中为 batchWriteItem(params,function(){}) 创建请求参数

Creating a Request Params for batchWriteItem(params,function(){}) in javaScript

我一直在尝试为 batchWriteItem() 创建参数,当我像这样创建它们时,它确实有效。

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

但是当我在变量中有 table 名称时,我无法处理它:

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)

有人可以指出我的错误吗? 谢谢。

您出现此错误是因为:

var params = {};

创建一个没有属性的空对象(称为 params),但是:

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

尝试分配 params.RequestItems.the-value-of-tableName

但是 params 没有 属性 调用 RequestItems 所以,params.RequestItems 是未定义的。 TypeError 尝试在 undefined.

上设置 属性(在本例中为 the-value-of-tableName)的值

要解决此问题,请使用:

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