2016-04-28 10 views
1

Das Problem ist der nächste Code auf dem Server:Meteor.publish auf dem Server zeigt keine neue Dokumente auf dem Client

Meteor.publish(null , function() { 
    let events = []; 
    Groups.find({participants: this.userId}).forEach(function(item) { 
     events.push(item.latestEvent); 
    }); 
    return Events.find({_id: {$in: events}}); 
}); 

keine Möglichkeit bieten, neue Dokumente auf dem Client, um zu sehen > Events.find().fetch() , ohne die Seite neu zu laden .

Beide Sammlung sind im lib Ordner:

Groups = new Mongo.Collection('groups'); 
Events = new Mongo.Collection('events'); 

Ich bin mir ziemlich sicher, dass das Problem in reaktiver Datenquelle ist, aber immer noch nicht beheben kann.

Vielen Dank für Ihre Hilfe!

Antwort

0

Ja, Sie haben recht: Nur die Ereignissammlung ist reaktiv. Es ist einfach so, wie es zu lösen, indem sie mit publish-composite Paket:

Meteor.publishComposite(null, { 
    find(){ 
     return Groups.find({participants: this.userId}); 
    }, 
    children: [{ 
     find(group){ 
     return Events.find({_id: {$in: group.latestEvent}}); 
     } 
    }] 
}); 

Aber diese Lösung hat einen Nachteil: Gruppen-Dokumente werden auch veröffentlicht. Also, wahrscheinlich sollten Sie einige Felder davon ausschließen.