@wufapexef

Почему пре-save хук не работает, когда обновляю данные?

Есть хук, который создает slug из тайтла

articleSchema.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 articlesWithSlug = await this.constructor.find({slug: slugRegEx})
  if(articlesWithSlug.length) {
    this.slug = `${this.slug}-${articlesWithSlug.length + 1}`
  }
  next()
})


Все работает как положено при первоначальном сохраниении, но если я изменяют тайтл, то slug не меняется. Почему? Как исправить?

UPD:

Нашел, что можно использовать хук на findOneAndUpdate (я его использую для обновления). Но все равно не работает. Проблема с this.isModified. Судя по всему, в хук для findOneAndUpdate возращаются другие данные нежели в save. Блин с этим МОнгузом больше проблем чем помощи! Разбираться в этих дебрях API, недокументированном постоянно меняющемся. Дерьмо конченное!
  • Вопрос задан
  • 46 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы