L4zl0w
L4zl0w

Reputation: 1097

Meteor publish - subscribe user profile

I'm trying to publish a user profile. I have the following publish function in publish.js:

Meteor.publish("singleProfile", function ( profileId ) {
  check(profileId, String);
  return Meteor.users.find(profileId, { fields: { _id: 1, services: 1, profile: 1 }});
});

This is my route in router.js:

Router.route('/profile/:_id', {
    name:           'profilePage',
    template:       'appProfile',
    onBeforeAction: function() {
      var currentUser = Meteor.userId();
      if(currentUser) {
        this.next();
      } else {
        this.render("signin");
      }
    },
    waitOn: function() {
      this.response = Meteor.subscribe('singleProfile', this.params._id);
      return this.response;
    },
    action: function() {
      this.render('appProfile');
    }
  });

Question is, how do I access the profile details in the appProfile template? Do I need a template helper defined? Or do I need to modify this code?

Upvotes: 1

Views: 79

Answers (1)

Stephen Woods
Stephen Woods

Reputation: 4049

You can use a template helper for this:

Template.appProfile.helpers({
    users() {
        return Meteor.users.find();
    }
});

Then in your template:

...
{{#each users}}
    {{profile.myProperty}} <!-- Renders the myProperty field of the profile. -->
{{/each}}

Upvotes: 1

Related Questions