パブリッシュ機能を実装するには、次の 2 つの方法があります。
- カーソル (またはカーソルの配列) を返すことによって
- this.added()、this.changed()、this.removed() を使用する。
返されたドキュメントを変更できるのは、方法 2 のみです。
こちらの Meteor のドキュメントを参照してください。ただし、提供されているサンプル コードは複雑に見える可能性があるため、別のコードを次に示します。
// server: publish the rooms collection
Meteor.publish("rooms", function () {
return Rooms.find({});
});
次と同等です。
// 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(); });
});
2 番目のサンプルでは、次のように、公開用に送信する前に「field」パラメーターを変更できます。
added: function(id, fields) {
fields.newField = 12;
self.added("rooms", id, fields);
},
出典:この投稿.