Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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

noveogroup-amorgunov commented Mar 24, 2017

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