有兩種方法可以實現發佈功能:
- 通過返回一個光標(或光標的陣列)
- 通過使用this.added(),this.changed()和this.removed()。
只有方法2允許修改返回的文檔。
請參閱流星文檔here。然而,由於提供的示例代碼可能是複雜的,這裏是另一個問題:
// 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);
},
來源:this post。
謝謝@Akshat!在哪裏可以找到更多關於'_transform'方法的信息? – rec 2013-03-23 23:13:08
看看http://docs.meteor.com/#collections,這是一個稍微向下的例子。我上面使用的_transform沒有記錄,但它允許與文檔中的用戶集合相同的使用 – Akshat 2013-03-24 07:07:53
對不起,但我無法做到這一點,我看不到'Meteor.user() .profile' – rec 2013-03-25 06:07:22