Hay 2 formas de implementar una función de publicación:
- Al devolver un cursor (o una matriz de cursores)
- Utilizando this.added(), this.changed() y this.removed().
Solo el método 2 permite modificar los documentos devueltos.
Consulte la documentación de Meteor aquí . Sin embargo, dado que el código de muestra proporcionado puede parecer complejo, aquí hay otro:
// server: publish the rooms collection
Meteor.publish("rooms", function () {
return Rooms.find({});
});
es equivalente 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(); });
});
En la segunda muestra, puede modificar el parámetro 'campo' antes de enviarlo para su publicación, así:
added: function(id, fields) {
fields.newField = 12;
self.added("rooms", id, fields);
},
Fuente:esta publicación .