Я создаю блог.Вот моя Post
модель:
const postSchema = new mongoose.Schema({
title: String,
slug: String,
content: String
});
Перед сохранением сообщения я создаю слаг с помощью:
postSchema.pre('save', async function(next) {
if(!this.isModified('title')) {
next();
return;
}
this.slug = slug(this.title);
const slugRegEx = new RegExp(`^(${this.slug})((-[0-9]*$)?)$`, 'i');
const postsWithSlug = await this.constructor.find({ slug: slugRegEx });
if (postsWithSlug.length) {
this.slug = `${this.slug}-${postsWithSlug.length + 1}`;
}
next();
});
Если я хочу отредактировать сообщение позже, я отправляю сообщение POSTзапрос /edit/:slug
:
router.post('/edit/:slug', async (req, res) => {
const post = await Post.findOneAndUpdate({ slug: req.params.slug }, req.body, {new: true, runValidators: true}).exec();
res.redirect(`/`);
});
Как я могу обновить слаг (если он требует обновления) после редактирования поста?Метод save
не вызывается методом findOneAndUpdate
?
Спасибо за любую помощь!