sails-hook-slugs
v4.0.1-beta.1
Published
A hook for Sails to handle slugs in your models.
Downloads
20
Readme
sails-hook-slugs
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
:
Parameter | Type | Details
-------------- | ------------------- |:---------------------------------
lowercase | boolean
| Whether or not the generated slugs are lowercased. Defaults to true
.
blacklist | Array<string>
| A list of reserved words to not use as slugs in your application. Defaults to []
.
separator | string
| Separator to use in slugs. Defaults to -
.
License
MIT © 2019 Jérémie Ledentu