Как изменить слаг поста в Mongoose после обновления с помощью findOneAndUpdate? - PullRequest
0 голосов
/ 01 июня 2019

Я создаю блог.Вот моя 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?

Спасибо за любую помощь!

...