2015-01-15 2 views
0

Я пытаюсь опубликовать все имена пользователей для клиентов, даже если не авторизованы Для этого на сервере у меня есть:Публикация все Meteor.users не работает

Meteor.publish("users", function() { 
    return Meteor.users.find({}, {fields : { username : 1 } }); 
}); 

А на клиент:

Meteor.subscribe("users"); 

Однако, когда я пытаюсь получить доступ к коллекции Meteor.users, я ничего не обнаруживаю.

(Это, по существу такой же, как и вопрос здесь: Listing of all users in the users collection not working first time with meteor js, только без проверки роли для администратора первого Еще не похоже на работу ...)

Я, вероятно, отсутствует что-то глупо ..

+0

Где вы пытаетесь получить доступ к этому курсору, на клиенте? –

+0

Вы уверены, что подписка готова, когда вы обращаетесь к данным? – stubailo

+1

@stubailo, если это имеет значение? Не должна ли реактивная модель обновлять мои данные, когда она будет готова? –

ответ

1

Я нахожу ту же проблему, и после проведения исследования я нахожу пакет this, я думаю, он может вам помочь.

Посмотрите и надеемся, что это поможет вам

Update

Сначала переместите подписку в папку /lib, просто чтобы убедиться, что его первое, что метеор сделать при запуске, а также изменить немного такую ​​подписку можно найти в папке /lib.

Tracker.autorun(function() { 
if(Meteor.isClient) { 
    if (!Meteor.user()) { 
    console.log("sorry you need to be logged in to subscribe this collection") 
    }else{ 
    Meteor.subscribe('users'); 
    } 
} 
}); 

Для более высокий уровень безопасности, мы просто подписаться на коллекцию пользователей, когда клиент его вошли в

+0

Если вы считаете, что это ошибка, создайте воспроизводимый проект и создайте проблему (https://github.com/meteor/meteor/issues/new). –

+0

Извините, мое плохое, что ошибка ошибка его «знакомая проблема» – Ethaan

+0

Как это помогает? –

1

Этот код выводит все имена пользователей для клиентов, даже если они не вошли (в данном случае на/страницы пользователей):

сервера/publications.js:

Meteor.publish("userlist", function() { 
    return Meteor.users.find({},{fields:{username:1}}); 
}); 

клиент/users_list.js:

Template.usersList.helpers({ 
    users: function() { 
     return Meteor.users.find(); 
    } 
}); 

клиента/users_list.html:

<template name="usersList"> 
     {{#each users}} 
     {{username}} 
     {{/each}} 
</template> 

Библиотека/router.js (с использованием железы: маршрутизатор пакет):

Router.route('/users', { 
    name: 'usersList', 
    waitOn: function(){ 
     return Meteor.subscribe("userlist"); 
    } 
}); 

Надеется, что это помогает.

Смежные вопросы