dimanche 12 juin 2016

Alerts are inserted but not showing up


Im working on a unread counter for messages and have alert collection and messages collection.

Issue now is console log shows alerts are attached to messsage, however the counter does not show up. Typing Alerts.find().count(); in console3e gives 0.

pub & sub

//in server.js 
Meteor.publish('alerts', function() {
    return Alerts.find({ userId: this.userId, read: false });
});
//in router 
Meteor.subscribe('alerts')

template counter + click to clear alerts

//helper 
   alertCount: function(){
      return Alerts.find({ userId: Meteor.userId(), read: false }).count();
   }
//event 
   'click .enterRoom': function() {
      Meteor.call('markAlertsAsRead', { roomId: this._id }); 
   }

attach alert when submit message

  'submit form': function(e, template) {  
      e.preventDefault();
      var message = template.find('input').value;  
      var roomId = this._id; 
      var messageId = Messages.insert ({ 
         roomId    : Router.current().params._id, 
         msg       : message,
         userId    : Meteor.user()._id,
      });
      template.find('input').value = '';
      createMessageAlert(messageId, roomId, message);

      var insertedMessage = Messages.findOne(messageId);
      console.log(insertedMessage + messageId); //logs msg + alert 
   }

in alert.js collection

Meteor.methods({
   markAlertsAsRead: function(options){ 
      check(options, Object);
      Alerts.update({ roomId: options.roomId }, { $set:{ read: true } }, { multi: true });
   } 
});

createMessageAlert = function(messageId, roomId, message){
      if ( message.user !== Meteor.userId() ){     
         Alerts.insert({
            userId        : message.userId,
            roomId        : Router.current().params._id,
            messageId     : messageId, 
            read          : false
         }, function(error, result){
               if( error ) console.log( error );
               if( result ) console.log( 'alert attached, alertId: ' + result );
         });
      }
};

Aucun commentaire:

Enregistrer un commentaire