2016-05-06 2 views
0

Ich habe einen 1 Cursor, um die Gesamtzahl der Wähler zu berechnen. Ich habe zwei Methoden, wo zuerst die Gesamtzahl der Wähler zu meinen Gunsten zählt, zweite Methode zählt die Gesamtzahl der Wähler stimmten.Mehrere Methodenaufrufe auf Collection.observe() Ereignis in Meteorjs

LIB/collection.js

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

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

SERVER/publish.js [Wähler zu meinen Gunsten zählen]

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 [erfolgreich Votings zählen]

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 
}); 

CLIENT/template/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; 
    } 

});

Mein Problem ist, wie mehrere Upsert-Methoden in einer Beobachtungsmethode Meteor veröffentlichte Sammlung aufrufen.

Antwort

0

Ich habe meine Lösung übrigens bekommen. Die Antwort darauf ist das Hinzufügen einer Funktion zum "geän- derten" oder "hinzugefügten" oder "entfernten" Ereignis und das Aufrufen von n Anzahl von Upsert-Methoden darin.

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

});