2016-02-09 3 views
2

Meteor.users.findOne() возвращает мне мой пользовательский документ.Метеор: как получить доступ к данным другого пользователя?

Meteor.users.findOne({_id: 'my ID'}) возвращает мне мой пользовательский документ.

Meteor.users.findOne({_id: 'another users's ID'}) возвращает меня НЕ УКАЗАН.

Это, очевидно, ограничено безопасностью. Но как я могу получить доступ к реквизитам других пользователей, например. _id, имя, профиль и т. д.?

+0

Вы опубликовали пользователя с этим ID? –

ответ

3

Вам нужно будет добавить издателя для пользователя. Вот пример:

// The user fields we are willing to publish. 
const USER_FIELDS = { 
    username: 1, 
    emails: 1, 
}; 

Meteor.publish('singleUser', function (userId) { 
    // Make sure userId is a string. 
    check(userId, String); 

    // Publish a single user - make sure only allowed fields are sent. 
    return Meteor.users.find(userId, { fields: USER_FIELDS }); 
}); 

Тогда на клиенте вы можете subscribe так:

Metor.subscribe('singleUser', userId); 

или использовать template subscription как это:

this.subscribe('singleUser', userId); 

примечаниями безопасности:

  1. Всегда check Аргументы для ваших издателей или клиентов могут делать плохие вещи, например, пройти {} для userId. Если вы получили сообщение об ошибке, убедитесь, что вы meteor add check.
  2. Всегда используйте опцию fields с коллекцией пользователей. В противном случае вы опубликуете все свои секреты. См. Раздел «Опубликованные секреты» от common mistakes.
+0

замечательный вариант для проверки. Я просто знаю, что из документации –

+0

Спасибо! У меня есть издатель, но я проведу сегодня. – L4zl0w

+0

Как я могу ссылаться на опубликованный профиль пользователя в шаблоне? Мне все еще нужен помощник шаблона? – L4zl0w

2

запустить его на сервере так:

Сервер:

Meteor.publish("otherUsers", function (userID) { 
    return Meteor.users.findOne({_id: userID}); 
}); 

Клиент:

Meteor.subscribe("otherUsers", <userIdYouWantToGetDetailsFor>); 

Тогда вы можете просто сделать Meteor.users.findOne на клиента донжон в виду, вы можете сделать это только для своего пользователя и идентификатора пользователя, который вы передали в подписке на метеор

+0

Спасибо! У меня есть издатель, но я проведу сегодня. – L4zl0w

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