Skip to content

Instantly share code, notes, and snippets.

@grabbou
Last active March 24, 2017 02:13
Show Gist options
  • Save grabbou/ead3e217a5e445929f14 to your computer and use it in GitHub Desktop.
Save grabbou/ead3e217a5e445929f14 to your computer and use it in GitHub Desktop.
How to use ES6 generators with Hapi.js <3
import co from 'co'
// Generator controller,
// this.models refers to Sequelize models added with server.bind()
function* loginController(request) {
let user = yield this.models.User.find({
where: {
email: request.payload.email
}
});
if (!user)
yield Promise.reject(Boom.notFound('USER_NOT_FOUND'));
return user.toJSON();
}
// Wraps generator so it can be used in Hapi responses
function wrapGen(generator) {
let handler = co.wrap(generator);
return function(request, reply) {
handler.bind(this)(request, reply)
.then(reply)
.catch(reply);
};
}
// Here's the most typical Hapi.js route
server.route({
method: 'POST',
path: '/auth/login',
handler: wrapGen(loginController)
});
@noveogroup-amorgunov
Copy link

I wrote small plugin for this: noveogroup-amorgunov/hapi-generoutify

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment