4.0.1-beta.1 • Published 5 years ago

sails-hook-slugs v4.0.1-beta.1

Weekly downloads
14
License
MIT
Repository
-
Last release
5 years ago

sails-hook-slugs

Build Status Coverage Status dependencies Status npm

This Sails.js hook generates URL-friendly slugs in your models.

http://www.myblog.com/post/233987
-> http://www.myblog.com/post/title-of-my-blog-post

Installation

Add this hook to your Sails app:

$ npm install sails-hook-slugs

That's all!

Usage

Add an attribute of type slug in a model:

module.exports = {

  attributes: {
    title: {
      type: 'string',
      required: true,
      unique: true
    },
    content: {
      type: 'text'
    },
    slug: {
      type: 'slug',
      from: 'title',
      blacklist: ['search']
    }
  }
};

Configure your slug attribute:

  • from: name of the attribute from which the slug will be defined (required)
  • blacklist: A list of reserved words to not use as this slug (optional)

A slug attribute is automatically set when you create a record:

Post.create({
  title: 'This is a new post!!!',
  content: 'Post content'
})
.then(function(post) {
  console.log(post.slug); // 'this-is-a-new-post'
});

If a record of the same model has the same slug, a UUID is added at the end of the new slug:

Post.create({
  title: 'This is a new post!!!!',
  content: 'A new post again'
})
.then(function(post) {
  console.log(post.slug); // 'this-is-a-new-post-a50ec97e-9ae1-44a5-8fb2-81c665b61538'
});

Like any other attribute, you can use it as criteria to find a given resource:

Post.findOne({ slug: 'this-is-a-new-post' })
.then(function(post) {
  // Use the post
})
.catch(function(err) {
  // ...
});

Configuration

These parameters can be changed in sails.config.slugs:

ParameterTypeDetails
lowercasebooleanWhether or not the generated slugs are lowercased. Defaults to true.
blacklistArray<string>A list of reserved words to not use as slugs in your application. Defaults to [].
separatorstringSeparator to use in slugs. Defaults to -.

License

MIT © 2019 Jérémie Ledentu

4.0.1-beta.1

5 years ago

4.0.1-beta.0

6 years ago

4.0.0

6 years ago

2.1.0

8 years ago

2.0.0

8 years ago

1.0.0

10 years ago

0.2.6

10 years ago

0.2.5

10 years ago

0.2.4

10 years ago

0.2.3

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.0

10 years ago