Проблема с метеоритами - PullRequest
0 голосов
/ 16 мая 2019

Мы используем метеор V1.5 в нашем проекте.Мы заметили странное поведение метода publish и subscriber.Отправка снимка экрана от KADIRA для одного из subscriber enter image description here

publish метод

Meteor.publish( 'companyBuiltCourses', companyId => {  
    return BuiltCourses.find({ company_id: companyId })
});

Когда мы используем ниже subscriber и мыпосетите страницу xyz, KADIRA показывает непрерывную загрузку документов, как показано на снимке экрана. Несмотря на то, что мы посещаем другую страницу, этот график остается тем же

Template.xyz.onCreated(function() {
   Tracker.autorun( () => {
     if (Meteor.user()) {
        Meteor.subscribe('companyBuiltCourses',Meteor.user().profile.company_id);
     }
   });
});

Когда мы используем метод ниже subscriber и посещаем страницу xyz, KADIRA показывает непрерывную выборку документов, как показанов скриншоте. Но когда мы посещаем другую страницу, этот график уменьшается до 0. Он больше не будет извлекать документ

Template.xyz.onCreated(function() {
   this.autorun( () => {
     let self = this;
      if(Meteor.user()){
        self.subscribe('companyBuiltCourses',Meteor.user().profile.company_id);
     }
   });
});

Для среды разработки оба метода извлекают документы только один раз, когда это необходимо,Это проблема ПРОИЗВОДСТВА.

Мы размещаем MongoDB удаленно и запускаем производство на pm2.Наверное, не должно быть непрерывного извлечения.

1 Ответ

0 голосов
/ 17 мая 2019

Довольно сложно сказать, что происходит, поскольку код, который вы предоставляете, достаточно прост. Единственное, о чем я могу думать, это то, что функция трекера вызывается неоднократно. Итак, вопрос в том, что вызывает это?

Этот код: Meteor.user().profile.company_id предполагает, что вы сохраняете данные для профиля пользователя в коллекции user. Это не очень хорошо, потому что пользователь может изменять свои собственные данные из консоли, а также система учетных записей время от времени изменяет запись пользователя, что может влиять на количество срабатываний подписок. В любом случае, я бы порекомендовал хранить связанные данные в отдельной коллекции, для которой можно ввести Meteor.userId(). Я не уверен, что это ответ на этот вопрос.

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