bookshelf-plugin-mode is inspired by visibility plugin, providing functionality to specify different modes with corresponding visible/hidden fields of model.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
dist
src
.babelrc
.gitignore
.npmignore
.travis.yml
LICENSE
README.md
package.json

README.md

bookshelf-plugin-mode

NPM version Build Status

bookshelf-plugin-mode is inspired by visibility plugin, providing functionality to specify different modes with corresponding visible/hidden fields of model.

install

npm install --save bookshelf-plugin-mode

usage

add plugin

var mode = require('bookshelf-plugin-mode');
bookshelf.plugin(mode);

define model modes

const User = bookshelf.Model.extend({
  tableName: "user",
  idAttribute: "user_id",
  serialize: function () {
    return {
      id: this.get('user_id'),
      name: this.get('name'),
      tel: this.get('tel'),
      email: this.get('email')
    }
  },
  modes: {
    info: {
      hidden: ['id']
    },
    test: {
      visible: ['name','tel']
    }
  }
});

use mode(...) in query

new User().mode('info').fetch();
// {name: "username", tel: "user_tel", email: "user_email}
new User().mode('test').fetch();
// {name: "username, tel: "user_tel"}

use mode in related

new User().fetch({
   originalOptions: {
     require: true,
     withRelated: ['relatedTable', 'photo']
   },
    modeOptions: {
     'relatedTable': 'mode',
     'photo': 'info'
   }
});