lambda-promise-handler
v0.0.5
Published
write your lambda handlers as promises which get event, context a custom payload and the cb, use promises as middleware, by default last promise's return value in chain resolves to api gateway json response
Downloads
28
Readme
lambda-promise-handler
write your lambda handlers as promises, use promises as middleware, last promise in chain resolves to response
example
'use strict';
// the following line is optional but recommended
global.Promise = require('bluebird'); // bluebird comes with lambda-promise-handler
const lambdaPromiseHandler = require('lambda-promise-handler');
const connector = lambdaPromiseHandler({
before(event, context, payload) {
// do something before the connector's promises are getting executed
// eg. open mongoose connection
},
after(results, event, context, payload) {
// do something after the connector's promises were executed
// this happens before success/error
// eg. close mongoose connection
},
success(results, event, context, payload) {
// create a json response for the http/s clients response
return results.pop();
},
error(err, event, context, payload) {
// do something with the error object before its getting sent to the http/s clients response
const errorResponse = err;
const errorMessage = err.message;
// if no error code found between brackets, use [500] as a default
if (!errorMessage.match(/\[(.*?)\]/)) errorResponse.message = `[500] ${errorMessage}`;
return errorResponse;
},
});
module.exports.createUser = connector((event, context, payload) => {
// logic to create a user in your database
// you can add key/values to the event, context and payload, they will appear in the next promise this connector runs
// but to keep the foundation clean, we recommend using the payload to move state to the next promise
payload.a = 1;
}, (event, context, payload) => {
// the payload contains the key a with value 1 already, so we now make the http/s client response containing just the number 2
return payload.a + 1;
});
Contribute
npm scripts
$ npm test
# just runs the tests
$ npm run watch
# runs the tests in watch mode, changing tests or module code re-runs the tests
$ npm run coverage
# creats an instructed build of the modules script and runs it through mocha, generates a html report
$ npm run report
# opens the html report in your default browser