Search code examples
viewhapi.js

How do I render a view to a variable with Hapi?


Is there a way to render a view to a variable? I want to change this.

var events = {
  lastIndex: 32,
  payload = [
    {
      id: 5,
      title: "Hello world!"
      conyent: "Lorem ipsum"
    },
    {
      id: 7,
      title: "Hello world!"
      conyent: "Lorem ipsum"
    },
    ...
    {
      id: 32,
      title: "Hello world!"
      conyent: "Lorem ipsum"
    }
  ]
};

return reply.view('event/list', {
  events: events.payload
});

To this:

return {
  events.lastIndex: 32,
  view: toView('event/list',events.payload)
}

I'm using Hapi v8 and Jade as render engine.


Solution

  • You can use server.render(). Example from the documentation:

    var Hapi = require('hapi');
    var server = new Hapi.Server();
    
    server.connection({ port: 80 });
    server.views({
        engines: { html: require('handlebars') },
        path: __dirname + '/templates'
    });
    
    var context = {
        title: 'Views Example',
        message: 'Hello, World'
    };
    
    server.render('hello', context, function (err, rendered, config) {
    
        console.log(rendered);
    });