nestjs-mongoose-slugfy
v0.0.1
Published
Generate unique slugs for your NestJSMongoose documents. This module uses slugify to generate slugs.
Downloads
17
Readme
nestjs-mongoose-slugfy
⭐️ Add a star on GitHub: it motivates me a lot!
Generate unique slugs for your NestJS/Mongoose documents. This module uses slugify to generate slugs.
Prerequisites
This project was developed using NodeJS v20.9.0, NPM v10.1.0 or Yarn v1.22.22 and NestJS v10.0.0.
Project dependencies:
- @nestjs/mongoose: ^10.0.4
- mongoose: ^8.2.3
- slugify: ^1.6.6
I do not guarantee backward compatibility with previous versions of NodeJS and NPM. Any requests are welcome.
Summary
Installation
BEFORE INSTALLING: please read the prerequisites
Depending on the package manager you prefer, you can install the library with npm or yarn.
npm install -S nestjs-mongoose-slufy
Or if you prefer to use Yarn:
yarn add nestjs-mongoose-slugfy
Usage
In your service
// ...
import { MongooseUniqueSlugfyClass } from 'nestjs-mongoose-slugfy';
// ...
export class ExampleService {
constructor(
@InjectModel(Example.name)
private _exampleModel: Model<ExampleDocument>
) {
}
// ...
async create(
data: ExampleDto
): Promise<IRequestQueryResponse<ExampleEntity>> {
const slugFy = MongooseUniqueSlugfyClass.create<ExampleDocument>(
this._exampleModel,
);
const slug = await slugFy.slugUniqueOf(data.name, {
fieldNameToCompare: 'slug', // il campo da confrontare
lower: true,
trim: true,
});
data.slug = slug;
// ...
}
// ...
}
Non-unique slugs
nestjs-mongoose-slugfy also exports:
import { MongooseSlugfyClass } from 'nestjs-mongoose-slugfy';
for generating non-unique slugs. In this case, it is not necessary to pass the field to compare.
Example:
import { MongooseSlugfyClass, MongooseUniqueSlugfyClass } from 'nestjs-mongoose-slugfy';
// ...
const slugfy = MongooseSlugfyClass.create();
const slug = await slugfy.slugOf('my text', {
lower: true,
trim: true,
});
Parameters
The slugOf method accepts the following parameters:
text
: the text to transform into a slug (required)- An interface with the following parameters (optional)
export interface MongooseSlugfyOptsInterface {
replacement?: string;
remove?: RegExp;
lower?: boolean;
strict?: boolean;
locale?: string;
trim?: boolean;
}
The slugUniqueOf method accepts the following parameters:
text
: the text to transform into a slug (required)- An interface with the following parameters (required):
export interface MongooseUniqueSlugfyOptsInterface {
replacement?: string;
remove?: RegExp;
lower?: boolean;
strict?: boolean;
locale?: string;
trim?: boolean;
fieldNameToCompare: string;
}
you can have more information about these parameters here.
Next steps
Offer tools for updating documents and managing existing slugs.
License
This work is distributed under a License Creative Commons Attribution - Share Alike 4.0 International.