mongoose-friendly-id
Version:
Slug for mongoose
71 lines (46 loc) • 1.57 kB
Markdown
## mongoose-friendly-id
a simple mongoose plugin that populates `.slug` when the given `prop` is set.
## installation
```bash
$ npm install mongoose-friendly-id
```
## Usage
```coffee
slug = require 'mongoose-friendly-id'
schema.plugin slug, 'name'
User = mongoose.model 'User', schema
user = new User
user.name = 'Hello world'
user.slug #=> 'hello-world'
user.slugs #=> ['hello-world']
user.name = 'Beautiful world'
user.slug #=> 'beautiful-world'
user.slugs #=> ['hello-world', 'beautiful-world']
user2 = new User
user2.slug #=> ObjectId('54ffa7b0f7ce3ce55b6d8515')
user2.slugs #=> [ObjectId('54ffa7b0f7ce3ce55b6d8515')]
User.findByFriendlyId 'hello-world', (err, user) ->
user.slug #=> 'hello-world'
user.slugs #=> ['hello-world', 'beautiful-world']
```
To use different slug candidates pass them as array
```coffee
slug = require 'mongoose-friendly-id'
schema.plugin slug, ['name', 'job']
User = mongoose.model 'User', schema
user = new User( name: 'Victor Kim', job: 'coffeescript programmer')
user.slug #=> 'victor-kim-coffeescript-programmer'
user.slugs #=> ['victor-kim-coffeescript-programmer']
````
To use different slug candidates pass them as function
```coffee
slug = require 'mongoose-friendly-id'
schema.plugin slug, (model) ->
"#{model.name}--#{model.job}" if model.name and model.job
User = mongoose.model 'User', schema
user = new User( name: 'Victor Kim', job: 'coffeescript programmer')
user.slug #=> 'victor-kim--coffeescript-programmer'
user.slugs #=> ["victor-kim--coffeescript-programmer"]
````
## License
MIT