Il existe 2 façons d'implémenter une fonction de publication :
- En retournant un curseur (ou un tableau de curseurs)
- En utilisant this.added(), this.changed() et this.removed().
Seule la méthode 2 permet de modifier les documents retournés.
Veuillez vous référer à la documentation de Meteor ici . Cependant, comme l'exemple de code fourni peut sembler complexe, en voici un autre :
// server: publish the rooms collection
Meteor.publish("rooms", function () {
return Rooms.find({});
});
est équivalent à :
// 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(); });
});
Dans le deuxième exemple, vous pouvez modifier le paramètre 'champ' avant de l'envoyer pour publication, comme ceci :
added: function(id, fields) {
fields.newField = 12;
self.added("rooms", id, fields);
},
Source :ce message .