我在Aurora DB中有一个表。我正在尝试AWS API Gateway,AWS Lambda和AWS Aurora DB。
我创建了一个Lambda函数,它接收来自API Gateway的请求并触发处理函数,但它不会将event.body写入表。
exports.insertBill = function(event, context, callback) {
context.callbackWaitsForEmptyEventLoop = false;
console.log(event.body);
var query = rDBConnection.query('INSERT INTO Bill SET ?', event.body, function(err, result) {
if (err) {
callback(null, {"statusCode": 400, "body": JSON.stringify(err)});
} else {
var recordId = result.insertId;
console.log("Record ID " + recordId);
var result = {recordId};
callback(null, {"statusCode": 200, "body": JSON.stringify(result)});
}
});
}
代码确实连接到DB。当我尝试如下设置主体时(来自Lambda测试界面)
"body": "{\n \"vendor_Id\" : 101,\n \"user_Id\" : 2224\n \n }",
它确实将主体显示为(来自console.log):
{
"vendor_Id" : 101,
"user_Id" : 2224
}
但抛出SQL错误:
{
"statusCode": 400,
"body": "{\"code\":\"ER_PARSE_ERROR\",\"errno\":1064,\"sqlState\":\"42000\",\"index\":0}"
}
当我在rDBConnection.query中尝试像{ "vendor_Id" : 101, "user_Id" : 2224 }
这样的硬编码值而不是event.body - >在这种情况下,代码会写入DB记录。
我不确定我在这里缺少什么。从API网关测试界面进行测试时,我收到了类似的结果。
答案 0 :(得分:0)
body
作为JSON字符串发送给Lambda,因此我在写入数据库之前在body
上执行了JSON.parse。