6.1.0 • Published 1 year ago

hapi-bookshelf-serializer v6.1.0

Weekly downloads
33
License
MIT
Repository
github
Last release
1 year ago

Hapi Bookshelf Serializer

npm version

This plugin takes Bookshelf.js models that are returned via Hapi's reply method and serializes them using a user-defined serialize method.

Registering the Plugin

const Hapi = require('@hapi/hapi');

const server = new Hapi.Server();

await server.register([
  require('hapi-bookshelf-serializer'),
]);

Defining Models

Models are defined just like all Bookshelf.js models, except for one small addition. A serialize function is added with the following signature function (request) { }. All model properties can be accessed in the serialize function via this.get() and the function will be passed the current Hapi request as request. The serialize function can either return a static value or a Promise.

Serializing Related Models

Currently there is no support in this module for automatically serializing all related models so you will need to call the function manually.

Example

// models/role.js
const bookshelf = require('bookshelf')(require('knex')(config));

module.exports = bookshelf.Model.extend({
  tableName: 'roles',
  serialize: function(request) {
    return {
      this.get('id'),
      this.get('name')
    };
  }
});

// models/user.js
const bookshelf = require('bookshelf')(require('knex')(config));
const Role      = require('./role.js');

module.exports = bookshelf.Model.extend({
  tableName: 'users',
  roles: this.belongsToMany(Role),
  serialize: function (request) {
    return {
      this.get('id'),
      this.get('email'),
      roles: this.related('roles').map(function (role) {
        return role.serialize(request);
      });
    };
  }
});

This plugin pairs well with the hapi-bookshelf-models plugin which makes registering models from a directory super easy.

6.1.0

1 year ago

6.0.0

4 years ago

5.0.0

4 years ago

4.0.0

4 years ago

3.0.1

7 years ago

3.0.0

7 years ago

2.1.0

10 years ago

2.0.0

10 years ago

1.4.0

10 years ago

1.3.0

11 years ago

1.2.0

11 years ago

1.1.0

11 years ago

1.0.0

11 years ago