2016-04-19 6 views
0

Ich veröffentliche Benutzer und eine zweite Sammlung namens Joboffers. Die Joboffers-Sammlung speichert die userIds für Arbeitgeber und Kandidaten. Ich möchte den Kandidatennamen neben dem Jobangebot für eine Admin-Seite anzeigen lassen, aber nichts, was ich tue, scheint zu funktionieren. Alle Joboffers zeigen aber nicht den Kandidatennamen an. In meiner Konsole bekomme ich nur Objekt.this.userId Benutzer nicht angezeigt

Pfad: 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);  
}); 

Pfad: 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; 
     }, 
    }); 

Pfad: alljoboffers.html

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

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

Antwort

1

Sie mischen Benutzer-ID und das Benutzerobjekt. Es ist eine gute Idee, einen globalen Helper zu erstellen, um eine Konvention über die Verwaltung zu erhalten. Dies wird helfen, die Verwirrung zu reduzieren. Zum Beispiel:

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

Dann in Ihrer Vorlage:

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

Dank @Hubert. Ich habe das überhaupt nicht erkannt und schätze den Vorschlag, einen globalen Helfer zu erstellen. Ich wünschte, ich hätte das zu Beginn des Projekts getan. Danke noch einmal! – bp123