Как отобразить данные профиля Meteor.user() в представлении

Я полагаю, что это должна быть элементарная проблема, однако я слишком долго боролся с этим. Я относительно новичок в Meteor.

Я просмотрел документацию для Meteor.user() (http://docs.meteor.com/#meteor_users) и может видеть, как в user.profile добавляется дополнительная информация. то есть,

//JS file
Meteor.users.insert({
    username: 'admin',
    profile: {
                first_name: 'Clark',
                last_name: 'Kent'
    },

});

Как тогда отображать информацию о профиле в шаблоне представления? Я могу получить доступ к объекту пользователя через представление и веб-консоль (Meteor.user()), однако я не могу получить доступ к сведениям об объекте.

Мои первоначальные мысли заключались в том, что я мог бы загрузить следующее в свои шаблоны руля, но они не работают:

// HTML view
{{Meteor.user().username}}
{{Meteor.user().profile.first_name}}
{{Meteor.user().profile.last_name}}

Любая помощь приветствуется.


person akaHeimdall    schedule 27.03.2014    source источник
comment
Просто {{currentUser.profile.first_name}} сделал бы это.   -  person Peppe L-G    schedule 30.01.2015


Ответы (4)


Ваша вставка правильная.

Но чтобы показать такую ​​информацию, как имя, вы должны предоставить вспомогательную функцию.

Ваш html-шаблон:

<template name="user">
  <p>{{firstName}}</p>
</template>

Ваш js-код:

Template.user.helpers({
  firstName: function() {
    return Meteor.user().profile.first_name;
  }
});

Вы можете дополнительно обернуть шаблон пользователя хелпером {{currentUser}}, чтобы убедиться, что пользователь есть.

{{#if currentUser}} 
  {{> user}}
{{/if}}
person chaosbohne    schedule 27.03.2014
comment
Ах. Извините за невероятно поздний ответ. Спасибо большое. - person akaHeimdall; 09.07.2014

Если вы не хотите определять прокси-хелпер для различных атрибутов объектов, вложенных в {{currentUser}}, вы можете сделать следующее исключительно в своем шаблоне:

{{#with currentUser}}
    {{#with profile}}
        {{first_name}}
    {{/with}}
{{/with}}

Обновлено, чтобы отразить предложение комментария.

person kontur    schedule 30.01.2015

В своих шаблонах вы захотите использовать {{currentUser}} вместо {{Meteor.user()}}.

Документы

person Jordan H.    schedule 27.03.2014

попробуй так

{{#with userDetails}}
   First name:-{{this.first_name}}
   Last name:- {{this.last_name}}
{{/with}}

 //jsSide
 userDetails(){
   return Meteor.user();
 }
person kumbhani bhavesh    schedule 17.08.2017