有两种方法可以实现发布功能:
- 通过返回一个游标(或游标数组)
- 通过使用 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(); });
});
在第二个示例中,您可以在发送发布之前修改“字段”参数,如下所示:
added: function(id, fields) {
fields.newField = 12;
self.added("rooms", id, fields);
},
来源:这篇文章。