bookshelf-base-model

Base model for Bookshelf ORM with some goodies

Usage no npm install needed!

<script type="module">
  import bookshelfBaseModel from 'https://cdn.skypack.dev/bookshelf-base-model';
</script>

README

bookshelf-base-model

Base model for bookshelf.

Install

npm install bookshelf-base-model --save

Usage

const knex = require('knex')({...})
const bookshelf = require('bookshelf')(knex)
const BaseModel = require('bookshelf-base-model')(bookshelf)

const User = BaseModel.extend({
  tableName: 'user',

  fields: {
    username: {
      validate: ['required']
    },
    email: {
      validate: ['required', 'email']
    },
    other: {}
  }
})

Features

Permitted fields

Allow only attributes from fields hash to go into database.

let user = User.forge({
  username: 'some-user-name',
  email: 'user@name.com',
  nonofield: 'invalid field'
})
user
  .save()
  .then(user => {
    // user saved without error
    // user.get('nonofield') === undefined
  })

Validation

Add validation to your fields using awesome Checkit module. It supports both sync and async validation. List of all available validators can be found here.

let user = User.forge({ email: 'invalid@email' })
user
  .save()
  .catch(User.ValidationError, function (err) {
    // handle validation error
  })
  .catch(function (err) {
    // handle db/other error
  })

Test

npm test

Licence

MIT