У меня есть несколько схем mon goose, для которых определен метод schema.queue()
, который в соответствии с docs должен запускаться только при первом создании документа, как и отвечал на мой предыдущий вопрос:
Пн goose Post Hook для create (), а не update ()
Однако у меня есть несколько маршрутов, использующих запросы Model.find()
, и кажется, что то же самое schema.queue()
вызывается для каждого документа, найденного запросом.
Вызов метода / очереди схемы:
formSchema.method('addDefault', async function () {
console.log('adding default questions to form')
const defaultQuestions = await Question.find({isDefault:true}).sort('order');
for (let question of defaultQuestions) {
this.questions.push(question._id);
}
await this.save()
});
formSchema.queue('addDefault',[]);
Это действительно срабатывает, когда создается «Форма» .
Однако, используя этот запрос:
try {
currentLocation = await Location.findById(req.params.locationId)
.populate('contacts')
.populate('forms')
.populate('company', 'name');
} catch (err) {
console.error(err);
throw new Error('Error loading location data');
}
Я получаю журналы «добавления вопросов по умолчанию в форму» для каждого найденного «Местоположения» (в каждом Местоположении также есть queue
вызов, который создает новую 'Form' и помещает ее _id
в массив в 'Location).
Я неправильно читаю документы? Метод schema.queue
не вызывается только при создании документа?