4.0.1-beta.1 • Published 3 years ago

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

Weekly downloads
14
License
MIT
Repository
-
Last release
3 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

3 years ago

4.0.1-beta.0

5 years ago

4.0.0

5 years ago

2.1.0

7 years ago

2.0.0

7 years ago

1.0.0

8 years ago

0.2.6

8 years ago

0.2.5

8 years ago

0.2.4

8 years ago

0.2.3

8 years ago

0.2.2

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago