Я в настоящее время есть паб метод/суб для пользователей, как это:Метеор наблюдать за пользователями курсора
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() до того, как обратные вызовы имели возможность запускать. Пользовательские документы должны в конечном итоге отображаться на клиенте сразу после сообщения готовности. – sba