1
我現在有這樣的用戶發佈/訂閱方法:流星的用戶觀察光標
Meteor.subscribe("userData");
Meteor.publish('userData', function() {
return Meteor.users.find({}, {fields: {profile: 1}});
});
這工作得很好。但我有問題,如果我想添加幾個字段在個人資料中觀察到的回調,像這樣:
Meteor.publish('userData', function() {
var self = this;
var users = Meteor.users.find({}, {fields: {profile: 1}});
var subHandle = users.observe({
added: function (fields) {
fields.profile.postCount = Post.find({'owner': fields._id}).count();
self.added("userData", fields._id, fields);
},
changed: function(newObj, oldObj){
fields.profile.postCount = Post.find({'owner': fields._id}).count();
self.changed("userData", newObj._id, newObj);
},
removed: function(obj) {
self.removed("userData", obj._id);
}
});
self.ready();
self.onStop(function() {
subHandle.stop();
});
});
問題是,當我試圖找到在客戶端的用戶,我能找到的只有一個用戶,自己,如果我登錄(控制檯內的Meteor.users.find().fetch()
)。而且我看到發佈已完成(控制檯內的Network WS部分),所以我知道有多個用戶被推送到客戶端。
因此,我明顯做錯了什麼,有人可以指點我正確的方向嗎?
嘗試檢查客戶端的'userData'集合。你必須先創造它。 –
觀察函數異步運行,因此您在回調有機會運行之前調用ready()。用戶文檔應該在ready消息之後最終顯示在客戶端上。 – sba