2016-03-20 6 views
0

Ich erstelle derzeit eine App, die von mehreren Unternehmen verwendet wird. Jeder Benutzer hat folgendes Profil:Meteor: Veröffentlichen mit Benutzerprofileigenschaften statt ID

username: johnDoe  
emails: [{address: "[email protected]", verified: true}], 
profile: { 
      name: "John Doe", 
      companyId: "1234" 
} 

Ich habe dann eine Sammlung (genannt Firmen) von Unternehmen Objekte, die Konfigurations-Informationen enthalten, Vorlagen usw. spezifisch für diese Unternehmen.

{ 
    id: "1234", 
    configuration: {}, 
    templates: [] 
} 

Um jedes Unternehmen Daten, die ich nur wollen, zu isolieren, um Daten zu veröffentlichen, die die Benutzer-ID CompanyID an der Firmen-Profil übereinstimmt.

if (Meteor.isServer) { 
    // collection to store all customer accounts 
    Companies = new Mongo.Collection('Companies'); 

    // publish collection 
    Meteor.publish("Company", function() { 
     return Companies.find({id: Meteor.user().profile.companyId}); 
    }) 
} 

Das funktioniert zur Zeit, wenn ich die Klinik Id

// publish collection 
    Meteor.publish("Company", function() { 
     return Companies.find({id: "1234"); 
    }) 

Aber gibt einen leeren Cursor mit dem Meteor.user(). Profile.companyId codieren. Das bedeutet, dass das Problem entweder darin besteht, dass ich die falsche Funktion verwende oder wahrscheinlicher ist, dass die Veröffentlichung stattfindet, bevor der Benutzer(). Profile.companyId ausgeführt werden kann.

Jeder weiß, was ich falsch mache? und hast du einen Ratschlag darüber, worüber du nachlesen sollst, damit ich Verständnis dafür habe, vorwärts zu kommen?

Dank

Antwort

1

versuchen, eine explizite FindOne() in der veröffentlichen Funktion tun:

// publish collection 
Meteor.publish("Company", function() { 
    var user = Meteor.users.findOne({_id: this.userId}); 
    if(user && user.profile && user.profile.companyId) { 
     return Companies.find({id: user.profile.companyId}); 
    } else { 
     console.log(user); 
     return this.ready(); 
    } 
}); 
+0

Dank dieser den Trick tat, werde ich etwas mehr Lesung zu diesem Ich denke, getan. – Aero

Verwandte Themen