2016-04-19 8 views
0

私はユーザーを公開しています。もう1つのコレクションはjoboffersです。 joboffersコレクションには、雇用者と候補者のuserIdsが格納されます。私は管理者ページのために求職者の隣に表示する候補者名を取得したいと思いますが、私は何もしていないようです。すべての求人は表示されますが候補者名は表示されません。私のコンソールでは、私はちょうどオブジェクトを得る。this.userIdにはユーザーが表示されません

パス:publish.js

// publish all jobs for admin to view 
Meteor.publish('allJobs', function() { 
    return JobOffers.find({}); 
}); 

Meteor.publish('allUsersWithJobs', function() { 
    var offers = JobOffers.find({}, {fields: {candidateUserId: 1}}).fetch(); 
    var ids = _.pluck(offers, 'candidateUserId'); 

    options = { fields: {username: 1, emails: 1, "profile.firstName": 1, "profile.familyName": 1 } }; 
    return Meteor.users.find({ _id: { $in: ids } }, options);  
}); 

パス:alljoboffers.js

Template.alljoboffers.onCreated(function() { 
    Meteor.subscribe("allJobs"); 
    Meteor.subscribe("allUsersWithJobs"); 

}); 

    Template.alljoboffers.helpers({ 
     alljoboffers: function() { 
      return JobOffers.find({}); 
     }, 
     candidateName: function() {  
      console.log(this); 

      var user = this.userId; 
      var candidate = (user && user.profile && user.profile.firstName); 

      return candidate; 
     }, 
    }); 

パス:alljoboffers.html

{{#each alljoboffers}} 
    {{positionTitle}} 

    {{#with candidateName}} 
     {{profile.firstName}} 
    {{/with}} 
{{/each}} 

答えて

1

は、ユーザーIDとユーザーオブジェクトを混合しています。グローバルヘルパーを作成して、それらの管理方法に関する条約を維持することをお勧めします。これは混乱を減らすのに役立ちます。たとえば、次のテンプレートで次に

Template.registerHelper('usernameById', function(userId) { 
    var user = Meteor.users.findOne({_id: userId}); 
    return user && user.profile.firstName; 
}); 

{{#each alljoboffers}} 
    {{positionTitle}} 
    {{usernameById candidateUserId}} 
{{/each}} 
+1

おかげ@Hubert。私はそれをまったく気付かず、グローバルヘルパーの作成についての提案に感謝します。私はプロジェクトの始めにこれをやり遂げたかったのです。再度、感謝します! – bp123

関連する問題