Det finns två sätt du kan implementera en publiceringsfunktion:
- Genom att returnera en markör (eller en array av markörer)
- Genom att använda this.added(), this.changed() och this.removed().
Endast metod 2 tillåter modifiering av returnerade dokument.
Se Meteor-dokumentationen här . Men eftersom den medföljande exempelkoden kan se komplex ut, här är en annan:
// server: publish the rooms collection
Meteor.publish("rooms", function () {
return Rooms.find({});
});
motsvarar:
// server: publish the rooms collection
Meteor.publish("rooms", function () {
var self = this;
var handle = Rooms.find({}).observeChanges({
added: function(id, fields) { self.added("rooms", id, fields); },
changed: function(id, fields) { self.changed("rooms", id, fields); },
removed: function(id) { self.added("rooms", id); },
}
});
self.ready();
self.onStop(function () { handle.stop(); });
});
I det andra exemplet kan du ändra parametern 'field' innan du skickar den för publicering, så här:
added: function(id, fields) {
fields.newField = 12;
self.added("rooms", id, fields);
},
Källa:det här inlägget .