Mon goose schema.queue вызывается для документов после find () и create () - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть несколько схем 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 не вызывается только при создании документа?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...