2015-05-11 3 views
0

@DavidWeldon Я пробовал ваш код (Meteor observe changes added callback on server fires on all item), и это очень хорошо, спасибо!Метеор наблюдал изменения добавленного обратного вызова

Однако я хотел бы иметь ваш совет: я использую его для уведомлений на рабочем столе: когда я получаю одно уведомление, есть один консольный журнал (ok), но когда я получаю другое уведомление (всего: 2), есть два консоль журнал (я хочу только одного журнала консоли, потому что есть только +1 уведомление)

Вот мой код:

if (Notification.permission !== "granted") 
Notification.requestPermission(); 

var query = Notifications.find({userId: Meteor.userId(), read: false}); 
(function() { 
    var initializing = true; 
    query.observeChanges({ 
    added: function(id, notification) { 
     if (!initializing) { 
     console.log(notification); 
     } 
    } 
    }); 
    initializing = false; 
})(); 

Спасибо за вашу помощь! :)

ответ

0

Наконец-то я нашел ответ, исследуя этот пост в DISCOVER метеора: https://www.discovermeteor.com/blog/template-level-subscriptions/

(на мой вопрос, я работал в Template.notifications.helpers)

Вот мой новый код:

Template.notifications.onCreated(function() { 

    if (Notification.permission !== "granted") 
    Notification.requestPermission(); 

    var instance = this; 
    instance.autorun(function() { 
    var query = Notifications.find({userId: Meteor.userId(), read: false}); 
    query.observeChanges({ 
     added: function(id, notification) { 
     var notification = new Notification('Notification', { 
      icon: '', 
      body: "You got a new notification !" 
     }); 
     } 
    }); 
    }); 

}); 
0

Вы можете использовать другой флаг?

if (Notification.permission !== "granted") 
Notification.requestPermission(); 

var query = Notifications.find({userId: Meteor.userId(), read: false}); 
(function() { 
    var initializing = true; 
    var firstNotif = true; 
    query.observeChanges({ 
    added: function(id, notification) { 
     if (!initializing && firstNotif) { 
     firstNotif = false; 
     console.log(notification); 
     } 
    } 
    }); 
    initializing = false; 
})(); 
+0

С этим решением не отображается консольный журнал – Benjamin

+0

Да, мой плохой, извините, я исправил свой ответ. – SylvainB

+0

Ммм спасибо, но у меня все еще есть проблема с консольным журналом (вместо одного) ... – Benjamin