我一直在尝试为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)
有人可以指出我的错误吗? 谢谢。
答案 0 :(得分:0)
出现此错误的原因是:
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.