Fai*_*hah 1 javascript amazon-web-services node.js amazon-dynamodb aws-lambda
我正在尝试将数据写入不同的表,表名是通过 get 请求传递的。
var tableName = event.tableName.toString();
Run Code Online (Sandbox Code Playgroud)
当我编写硬编码的 tableName 时它工作正常,但是当我编写变量 Name 时它会引发错误。
2018-11-20T21:09:31.532Z 928e237c-ed08-11e8-a312-539d290e67fc {"errorMessage":"请求的资源未找到","errorType":"ResourceNotFoundException","stackTracextract":["Request. 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","请求。(/var/runtime/node_modules/aws-sdk/lib/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-539d290e67fc73c28RequestId ed08-11e8-a312-539d290e67fc 持续时间:124.41 ms 计费持续时间:200 ms 内存大小:1024 MB 已用最大内存:33 MB41 ms 计费持续时间:200 ms 内存大小:1024 MB 已用最大内存:33 MB41 ms 计费持续时间:200 ms 内存大小:1024 MB 已用最大内存:33 MB
这是代码:
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
}
}
}
}
]
Run Code Online (Sandbox Code Playgroud)
} };
我认为您的 json 不正确。当您定义 RequestItems 对象时
RequestItems: { tableName: [...] }
Run Code Online (Sandbox Code Playgroud)
您实际上是将字符串“tableName”硬编码为属性,而不是称为“tableName”的变量。这就是为什么没有所谓的表。
es6 的解决方案是这样做:
RequestItems: { [tableName]: [...] }
Run Code Online (Sandbox Code Playgroud)
老式的解决方案是这样做:
var RequestItems = {};
RequestItems[tableName] = [...];
Run Code Online (Sandbox Code Playgroud)
请参阅如何从变量设置 JS 对象属性名称以供参考
编辑:
要获得更完整的解决方案,请尝试:
var params = {};
params.RequestItems = {};
params.RequestItems[tableName] = [...]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1122 次 |
| 最近记录: |