0.3.1 • Published 7 years ago

weare-mongoose-slug v0.3.1

Weekly downloads
5
License
WEARE
Repository
bitbucket
Last release
7 years ago

weare-mongoose-slug

Consist of a plugins that can generate unique slugs with an increment (exemple: mycoolslug-2). It can also be used to generate unique fields (dosen't have to be an actual slug, can be a string of any kind).

This module support Mixed fields with objects containings slugs (like multilingual objects).

Installation

$ npm install weare-mongoose-slug

Usage

#!javascript
var mongooseSlug = require('weare-mongoose-slug');

Exemples

:sparkles: Simple

This will populate the slug field with a slugified version of the title field.

It will also add incrementation if an identical slug already exist in database.

#!javascript
var mongooseSlug = require('weare-mongoose-slug');

var MySchema = new Schema({
  title: String,
  slug: String // can be created now but it will be created by the plugin if it doesn't exist
});

// add slug plugin
MySchema.plugin(mongooseSlug.plugin, {
  fieldFrom: 'title'
});

:scream: Complex

You can also independently use internal components to make your own complex slugs :

#!javascript
var mongooseSlug = require('weare-mongoose-slug');

var MySchema = new Schema({
  title: String,
  titleOfDoom: String
});

// add slug fields + generates them on save
MySchema.plugin(mongooseSlug.plugins.slug, {
  fieldFrom: 'title',
  fieldTo: 'strangeFieldNameForASlug',
  options: {} // options passed to slug module
});

MySchema.plugin(mongooseSlug.plugins.slug, {
  fieldFrom: 'titleOfDoom',
  fieldTo: 'anOtherSlugBecauseOfReasons'
});

// add auto increment when slug is not unique
MySchema.plugin(mongooseSlug.plugins.autoIncrement, {
  fields: ['strangeFieldNameForASlug','anOtherSlugBecauseOfReasons']
});

Changes log

0.3.*

  • add handling for dotted paths (like slug.fr, slug.en, etc.)
  • strict passing of mongoose document instance in many functions instead of simple object (generateSlug helper and more)
  • clean obselete code

0.2.*

  • remove the model option used in autoincrement plugin, therefore the plugin does not need to be added after the model is compiled
  • autocreate the fieldTo path in the schema if undefined
  • add emptyOnly for slug plugin

0.1.* - The module was born

The code was partially taken from evenko-yuleat and some things have changed while transfering it into a module :

  • the method handleSlug in routes helpers has been modified to be used with a document instead of a req object
  • fix string slug support
  • the increment separator now consist of a format in which we inject the value
  • fix support for indendent increment on slug object with multiple properties
0.3.1

7 years ago