I am using AWS Lambda to create a fetch API by passing a query parameter eg. vendorId, but in some case, I need whole data without passing the query parameter and in that case, my code is broken. Let me know how I can handle the query parameter.
var mysql=require('mysql'); //Require whatever connector you need.
function getConnection()
{
var params={
host : 'myhostinfo',
user : 'myuser',
password : 'mypwd',
database : 'mydb'
};
return mysql.createConnection(params);
}
//This is your handler.
exports.handler=function(event, context,callback)
{
//This is declared inside the handler: it is guaranteed to never be reused!.
var connection=getConnection();
var fetchvendors="";
if(event.query.vendorid)
{
var vendorid=parseInt(event.query.vendorid);
fetchvendors="SELECT v.*,c.vcategoryname FROM `tbl_vendors` v LEFT
OUTER JOIN tbl_demo_categories c ON v.vendorcatid=c.vcategoryid WHERE
v.vendorid="+vendorid;
}
else{
fetchvendors="SELECT v.*,c.vcategoryname FROM `tbl_vendors` v LEFT
OUTER JOIN tbl_demo_categories c ON v.vendorcatid=c.vcategoryid WHERE
status=1";
}
connection.query(fetchvendors, function (error, results, fields) {
if (error) {
connection.destroy();
throw error;
} else {
// connected!
callback(null, results);
connection.end();
}
});
}
here is the result
Response:
{
"errorMessage": "RequestId: 42fd18b1-598c-4f7e-b93b-
b146777772b2
Process exited before completing request"
}
Request ID:
"42fd18b1-598c-4f7e-b93b-b146777772b2"
Function Logs:
START RequestId: 42fd18b1-598c-4f7e-b93b-b146777772b2 Version:
$LATEST
2019-04-04T10:48:34.959Z 42fd18b1-598c-4f7e-b93b-
b146777772b2 TypeError: Cannot read property 'vendorid' of
undefined
AWS Lambda now supports Node. js 16 as both a managed runtime and a container base image. Developers creating serverless applications in Lambda with Node. js 16 can take advantage of new features such as support for Apple silicon for local development, the timers promises API, and enhanced performance.
If you are using API Gateway as the trigger to the lambda function, the query paramters are available at event.queryStringParameters
. So you should be doing event.queryStringParameters.vendorid
if vendorid is the GET param. Here's a full sample of API Gateway Proxy request to Lambda.
{
"body": "eyP0ZXQ0IjoiYm9keSJ9",
"resource": "/{proxy+}",
"path": "/path/to/resource",
"httpMethod": "POST",
"isBase64Encoded": true,
"queryStringParameters": {
"foo": "bar"
},
"pathParameters": {
"proxy": "/path/to/resource"
},
"stageVariables": {
"baz": "qux"
},
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, sdch",
"Accept-Language": "en-US,en;q=0.8",
"Cache-Control": "max-age=0",
"CloudFront-Forwarded-Proto": "https",
"CloudFront-Is-Desktop-Viewer": "true",
"CloudFront-Is-Mobile-Viewer": "false",
"CloudFront-Is-SmartTV-Viewer": "false",
"CloudFront-Is-Tablet-Viewer": "false",
"CloudFront-Viewer-Country": "US",
"Host": "1234567890.execute-api.us-east-1.amazonaws.com",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Custom User Agent String",
"Via": "1.1 08f323deadbeefa7af34d5feb414ce27.cloudfront.net (CloudFront)",
"X-Amz-Cf-Id": "cDehZQoZnx43VYQb9j2-naCh-9y396Uhbp027Y2JvkCPNLmGJHqlaA==",
"X-Forwarded-For": "127.0.0.1, 127.0.0.2",
"X-Forwarded-Port": "443",
"X-Forwarded-Proto": "https"
},
"requestContext": {
"accountId": "123456789012",
"resourceId": "123456",
"stage": "prod",
"requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef",
"requestTime": "09/Apr/2015:12:34:56 +0000",
"requestTimeEpoch": 1428582896000,
"identity": {
"cognitoIdentityPoolId": null,
"accountId": null,
"cognitoIdentityId": null,
"caller": null,
"accessKey": null,
"sourceIp": "127.0.0.1",
"cognitoAuthenticationType": null,
"cognitoAuthenticationProvider": null,
"userArn": null,
"userAgent": "Custom User Agent String",
"user": null
},
"path": "/prod/path/to/resource",
"resourcePath": "/{proxy+}",
"httpMethod": "POST",
"apiId": "1234567890",
"protocol": "HTTP/1.1"
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With