Si vous souhaitez que cette configuration fonctionne, vous devez procéder comme suit :
Meteor.publish('thisNameDoesNotMatter', function () {
var self = this;
var handle = Meteor.users.find({}, {
fields: {emails: 1, profile: 1}
}).observeChanges({
added: function (id, fields) {
self.added('thisNameMatters', id, fields);
},
changed: function (id, fields) {
self.changed('thisNameMatters', id, fields);
},
removed: function (id) {
self.removed('thisNameMatters', id);
}
});
self.ready();
self.onStop(function () {
handle.stop();
});
});
Non, côté client, vous devez définir une collection côté client uniquement :
directories = new Meteor.Collection('thisNameMatters');
et abonnez-vous à l'ensemble de données correspondant :
Meteor.subscribe('thisNameDoesNotMatter');
Cela devrait fonctionner maintenant. Faites-moi savoir si vous pensez que cette explication n'est pas assez claire.
MODIFIER
Ici, le self.added/changed/removed
Les méthodes agissent plus ou moins comme un répartiteur d'événements. En bref, ils donnent des instructions à chaque client qui a appelé
Meteor.subscribe('thisNameDoesNotMatter');
sur les mises à jour qui doivent être appliquées sur la collection du client nommée thisNameMatters
en supposant que cette collection existe. Le nom - passé comme premier paramètre - peut être choisi presque arbitrairement, mais s'il n'y a pas de collection correspondante côté client, toutes les mises à jour seront ignorées. Notez que cette collection peut être côté client uniquement, elle ne doit donc pas nécessairement correspondre à une "vraie" collection de votre base de données.
Renvoyer un curseur depuis votre publish
méthode c'est seulement un raccourci pour le code ci-dessus, avec la seule différence que le nom d'une collection réelle est utilisé à la place de notre theNameMatters
. Ce mécanisme vous permet en fait de créer autant de "miroirs" de vos jeux de données que vous le souhaitez. Dans certaines situations, cela peut être très utile. Le seul problème est que ces "collections" seront en lecture seule (ce qui est tout à fait logique) car si elles ne sont pas définies sur le serveur, les méthodes "insert/update/remove" correspondantes n'existent pas.