node.js - 邮递员调用 AWS API Gateway 以触发 AWS lambda 函数不起作用
问题描述
我创建了一个 api,当被调用时,会触发用 nodejs 编写的 lambda 函数,以获取 json(对象数组)并将数据插入 dynamodb。对于数组中的每个对象,该函数都会创建一个 PutRequest 对象,并在完成后调用 batchWriteItem 函数。当我在 aws 控制台中测试时,一切正常,但是当我在邮递员中尝试时,我收到 500 错误。我知道来自邮递员和控制台的事件是不同的,如果你想访问 json,你应该引用“event.body”但是当我这样做时,我收到 event.body.ForEach 的错误:“不能在控制台中读取未定义的属性 'forEach' 和邮递员中的 500 错误。下面是在控制台中工作的代码
var dynamo = new AWS.DynamoDB({region: 'us-east-1',});
exports.handler = (event, context, callback) => {
const done = (err, res) => callback(null, {
statusCode: err ? '400' : '200',
body: err ? err.message : res,
});
var params = {
RequestItems: {
"Lead": []
}
}
event.forEach(x => {
params.RequestItems.Lead.push({
PutRequest: {
Item: {
"Address": {S: x.Address},
"City": {S: x.City},
"State": {S: x.State},
"Zipcode": {S: x.Zipcode},
"Owner_First_Name": {S: x.Owner_First_Name},
"Owner_Last_Name": {S: x.Owner_Last_Name}
}
}
})
})
dynamo.batchWriteItem(params, done);
};
解决方案
当 lambda 从 api 网关接收到 json 主体时,它将作为 json 字符串传递。
要将 json 字符串转换为 json,您需要解析 event.body。
const body = JSON.parse(event.body)
然后你可以做body.forEach
希望这可以帮助
推荐阅读
- assembly - 什么是描述符寄存器?
- r - 错误:无法从私有 SVN 服务器安装 R 包
- html - 导航面板粘在屏幕顶部的问题
- javascript - 将输入值保存到本地存储并在不同的页面上检索它
- excel - Excel 的 VBA UDF 变得有价值!在另一个 UDF 上使用 hidden = true 之后
- php - 如何使用 PHP 通过选择列表从表中获取周数据计数、昨天数据、月份数据
- c++ - 布尔真值表 C++
- java - 如何在 Jersey 中获取请求和响应信息作为发布请求?
- java - 即时更改方向更改样式
- python - aws lambda的字典问题 - Python