bookshelf-uuid-column
Version:
Automatically generates UUID for your models in a custom column
55 lines (39 loc) • 2.06 kB
Markdown
[](https://circleci.com/gh/estate/bookshelf-uuid)
[](https://codeclimate.com/github/estate/bookshelf-uuid)
[](https://codeclimate.com/github/estate/bookshelf-uuid/coverage)
[](http://badge.fury.io/js/bookshelf-uuid)
[](https://www.npmjs.com/package/bookshelf-uuid)
Automatically generate UUIDs for your models and let you choose the column name.
Useful if you are using standard integer primary keys but prefer not to expose these to the public, rather identifying your resources based on an unique ID.
After installing `bookshelf-uuid-column` with `npm i --save bookshelf-uuid-column`,
all you need to do is add it as a bookshelf plugin and enable it on your models.
```javascript
let knex = require('knex')(require('./knexfile.js').development)
let bookshelf = require('bookshelf')(knex)
// Add the plugin
bookshelf.plugin(require('bookshelf-uuid-column'))
// Enable it on your models
let User = bookshelf.Model.extend({ tableName: 'users', uuid: true, uuidAttribute: 'uuid' }) // default uuidAttribute is 'uuid'
```
Nothing fancy here, just keep using bookshelf as usual.
```javascript
// This user is indestructible
let user = yield User.forge({ email: 'foo@bar' }).save()
console.log(user.id) // 6b7a192f-6e1c-4dcb-8e57-14ab16d5fdf4
```
`bookshelf-uuid-column` generates UUIDs v4 by default, but you can easily switch to
v1 UUIDs or a custom generator.
```javascript
bookshelf.plugin(require('bookshelf-uuid-column'), {
type: 'v1' // Or your own function
})
```
```bash
git clone git@github.com:jesobreira/bookshelf-uuid-column.git
cd bookshelf-uuid-column && npm install && npm test
```