Несколько вызовов методов для коллекции.наблюдать () событие в Meteorjs

У меня есть 1 курсор для подсчета общего числа избирателей. У меня есть два метода, где первый подсчитывает общее количество избирателей в мою пользу, второй метод подсчитывает общее количество избирателей, сделавших голосование.

LIB / коллекция.js

infavourcount = new Mongo.Collection('infavourcount');

votedone = new Mongo.Collection('votedone');

Сервер/публикация.js [подсчет голосов в мою пользу]

function upsertInFavourCount() {
  var yes = voters.find({favour: {$regex:"Y", $options: 'i'}}).count();
  var maybe = voters.find({favour: {$regex:"M", $options: 'i'}}).count();
  var no = total - (yes + maybe);
  infavourcount.upsert('infavour',
    { 
        yes: yes ,
        maybe: maybe,
        no:no
    }
 );
}

// null name means send to all clients
Meteor.publish(null,function() {
    upsertInFavourCount();
    return infavourcount.find();
});

Сервер/публикация.js [подсчет успешных голосований]

function upsertVoteDone() {
    var done = voters.find({voted: {$regex:"Y", $options: 'i'}}).count();
    votedone.upsert('votedone',
      { 
        done: done 
      }
   );
}

Meteor.publish(null,function() { 
    upsertVoteDone();
    return votedone.find();
});

var cursor = voters.find();

cursor.observe({
  changed: upsertVoteDone
});

Клиент / шаблон / главная.js

Template.home.onCreated(function(){
   Meteor.subscribe('voters');
   Meteor.subscribe('infavourcount');
   Meteor.subscribe('votedone');
});

Template.home.helpers({
   yesvote : function() {
    return infavourcount.findOne().yes;
   },
   maybevote : function() {
    return infavourcount.findOne().maybe;
   },
   novote : function() {
    return infavourcount.findOne().no;
   },
   votedone : function() {
      return votedone.findOne().done;
   }

});

Моя проблема заключается в том, как вызвать несколько методов upsert в одном методе наблюдения опубликованной коллекции Meteor.

1 ответ

  1. Кстати, я получил свое решение. Ответ на это-добавить функцию на «измененном» или «добавленном» или «удаленном» событии и вызвать n число методов upsert в нем.

    cursor.observe({
      changed: function(id, fields){
        upsertInFavourCount();
        upsertVoteDone();
    }
    

    });