2016-05-06 1 views
0

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

LIB/collection.js

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

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

SERVER/publish.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(); 
}); 

SERVER/publish.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 
}); 

клиент/шаблон/home.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.

ответ

0

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

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

});

Смежные вопросы