Mon goose - доступ к данным из виртуального узла в 'pre' save hook - PullRequest
0 голосов
/ 27 марта 2020

Мне нужно использовать данные из вновь созданного документа и использовать эти данные для обновления значения с помощью ловушки «pre».

Например, моя модель:

...
title: {
  type: String,
  required: true
},
company: {
  type: mongoose.Schema.ObjectId,
  ref: 'Company',
  required: true
}

...

И хук 'pre':

jobSchema.pre('save', function(next) {
  const jobTitle = slugify(this.title, { lower: true })
  const companyName = slugify(this.company.name, { lower: true })
  this.slug = jobTitle + companyName
  next()
})

Я не могу получить доступ к this.company в хуке, и я не уверен, как это можно сделать .

1 Ответ

1 голос
/ 27 марта 2020

Поскольку company является типом ObjectId, вы можете использовать findById для доступа

jobSchema.pre('save', function(next) {
    let job = this;
    Company.findById(job.company, function (err, company) {
        if(err) return next(err);
        const jobTitle = slugify(job.title, { lower: true })
        const companyName = slugify(company.name, { lower: true })
        job.slug = jobTitle + companyName
        next();
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...