2016-03-20 28 views
0

yerine kullanıcı profili özelliklerini kullanarak yayınla Şu anda birden çok şirket tarafından kullanılacak bir uygulama oluşturuyorum. Sonra o şirkete özgü konfigürasyon bilgileri ihtiva şirket nesneler, şablonlar vb bir koleksiyon (denilen şirketler) sahipMeteor: ID

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

: her kullanıcı aşağıdaki profiline sahiptir. Sadece kullanıcıların şirketleri id şirket kimliği profili eşleşen verileri yayınlamak istediğiniz her şirket verilerini izole etmek amacıyla

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

.

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

Bu, şu anda ben kliniği

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

Kimliği

hardcode çalışır Ama Meteor.user(). Profile.companyId boş bir imleç döndürür. Bu, sorunun ya yanlış işlev kullanacağım ya da daha büyük olasılıkla kullanıcı(). Profile.companyId dosyasının çalışabilmesi için yayımlanacağı anlamına gelir.

Neyi yanlış yaptığımı bilen var mı? ve neyi okuyacağınıza dair herhangi bir tavsiyeniz var mı?

Teşekkür

açık findOne yapıyor

cevap

1

deneyin() sizin yayınlama işlevinde:

// 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

sayesinde bu hile yaptı, ben düşünüyorum bu konuda yapılan bazı daha fazla okuma alırsınız. – Aero