2016-04-14 7 views
0

MeteorJS новичок здесь. У меня есть сборник «posts», в котором есть поля: title, createdAt, body, userId. Хотя у меня есть только два пользователя, для каждого сообщения, похоже, есть другой userId. Я просто хочу отображать сообщения в блоге, а также их электронные письма соответствующих пользователей. Моя текущая реализация выглядит следующим образом и отображаются сообщение электронной почты текущего пользователя, а не владелец электронной почты блог Поста:Использование стека MeteorJS, как получить электронное письмо пользователя с его userId из сообщения, которое они сделали

"click .main-feed-post" : function(event) { 
... 
document.getElementById('post-view-email').innerHTML = Meteor.users.findOne({_id: this.userId}).emails[0].address; 
... 
} 

что в настоящее время выводя только вошедший в адресе электронной почты пользователя. Предыдущее - для просмотра отдельных сообщений в блоге. Кроме того, у меня есть основной канал, где я перечисляю все сообщения в блоге и электронные письма их соответствующего владельца:

{{#each posts}} 
     <li class="main-feed-post"> 
      {{title}} 
      <div class="main-feed-post-data"> 
      <label>BY</label> {{getUserEmail}} <label>AT</label>           {{formattedDate}} 
    </div> 
    </li> 

...

getUserEmail : function() { 
     return Meteor.users.findOne({_id: this.userId}).emails[0].address; 

} 
    {{/each}} 

Это не выводящий ничего, если это не электронная почта текущего пользователя , В идеале я бы добавил поле пользователя к объекту пользователя и отобразил его вместо имени пользователя или электронной почты. Я не уверен, как реализовать это, используя пакеты account-ui и accounts-password. Любая помощь приветствуется! Заранее спасибо!

+0

Meteor.users.find() выборки() С консоли ... это возвращает только текущий пользователь.. ..в результате удаления «небезопасного» пакета, я запретил пользователям получать доступ к любой пользовательской информации, отличной от их собственной? – programmingmusic

ответ

0

Внутри сервера:

Meteor.publish("allUsers", function() { 
    return Meteor.users.find({}); 
}); 
Meteor.publish("allUserData", function() { 
    return Meteor.users.find({}, {fields: {"emails.address": 1}}); 
}); 

Внутри Клиент:

Meteor.subscribe("allUsers"); 
Meteor.subscribe("allUserData");