Esistono 2 modi per implementare una funzione di pubblicazione:
- Restituendo un cursore (o un array di cursori)
- Utilizzando this.added(), this.changed() e this.removed().
Solo il metodo 2 consente di modificare i documenti restituiti.
Fare riferimento alla documentazione di Meteor qui . Tuttavia, poiché il codice di esempio fornito potrebbe sembrare complesso, eccone un altro:
// server: publish the rooms collection
Meteor.publish("rooms", function () {
return Rooms.find({});
});
equivale a:
// 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(); });
});
Nel secondo esempio, puoi modificare il parametro 'field' prima di inviarlo per la pubblicazione, in questo modo:
added: function(id, fields) {
fields.newField = 12;
self.added("rooms", id, fields);
},
Fonte:questo post .