В соответствии с mon goose -slug-generator вам нужно применить плагин к mon goose, но в вашем коде он применяется к схеме.
Так что если попробуйте этот код, он будет работать:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
var URLSlug = require("mongoose-slug-generator");
mongoose.plugin(URLSlug);
const articleSchema = new Schema(
{
title: { type: String, required: true },
description: { type: String, required: true },
userId: { type: Schema.Types.ObjectId, ref: "User" },
slug: { type: String, slug: "title"}
},
{ timestamps: true }
);
articleSchema.pre("save", function(next) {
this.slug = this.title.split(" ").join("-");
next();
});
const Article = mongoose.model("Article", articleSchema);
module.exports = Article;
Если мы отправим req.body следующим образом:
{
"title": "metal head dev",
"userId": "5e20954dc6e29d1b182761c9",
"description": "description"
}
Сохраненный документ будет выглядеть так (как вы видите слаг генерируется правильно):
{
"_id": "5e23378672f10f0dc01cae39",
"title": "metal head dev",
"description": "description",
"createdAt": "2020-01-18T16:51:18.445Z",
"updatedAt": "2020-01-18T16:51:18.445Z",
"slug": "metal-head-dev",
"__v": 0
}
Кстати, mongoose-slug-generator
кажется довольно старым, есть более популярный и хорошо поддерживаемый slugify пакет.