2016-05-13 3 views
0

Wie kann ich eine Anzahl von Sammlungen beim Start basierend auf Feldern in meiner 'Firmendaten' Sammlung erstellen?Veröffentlichen Sie eine Reihe von Sammlungen mit einer Veröffentlichungsfunktion in Meteor

Zur Zeit habe ich auf Client und Server:

datacollections = {}; 
CompanyData = new Meteor.Collection('companydata'); 
Meteor.startup(function(){ 
    DataCollectionList = CompanyData.find({},{fields: {'data':1}}); 
    DataCollectionList.forEach(function(doc){ 
    datacollections[doc.data] = new Meteor.Collection(doc.data); 
    console.log(datacollections[doc.data].findOne()) 
    }) 
}); 

Dies funktioniert Server-Seite als die Server-Konsole druckt die Datenobjekte beim Start. Der Client druckt jedoch nur undefined. Wie bekomme ich diese Daten auf dem Client?

+0

Die CompanyData Sammlung auf dem Client, aber keiner der datacollections Sammlungen sichtbar ist. –

+1

Sie ist auf dem Client nicht verfügbar, da die 'CompanyData'-Sammlung beim Start nicht aufgefüllt wird. Sie müssen warten, bis die Daten bereit sind, bevor Sie sie aufrufen. Sind Sie sicher, dass Sie den Pfad zur Sammlung nach Entitäten durchgehen möchten? – MasterAM

+0

Wie @MasterAM impliziert, sind dynamische Sammlungen normalerweise kein großartiges Muster. –

Antwort

0

Versuchen Sie folgendes:

datacollections = {}; 
CompanyData = new Meteor.Collection('companydata'); 
Meteor.startup(function(){ 
    DataCollectionList = CompanyData.find({},{fields: {'data':1}}); 
    DataCollectionList.forEach(function(doc){ 

    datacollections[doc.data] = new Meteor.Collection(doc.data); 
    //----------------------------------------------------- 
    Meteor.publish(null ,function() { 
    // null name means send to all clients. 
    return datacollections[doc.data]; 
    }); 
    //----------------------------------------------------- 

    console.log(datacollections[doc.data].findOne()) 
    }) 
});  
Verwandte Themen