2016-05-13 95 views
0

如何基於我的'companydata'集合中的字段在啓動時創建大量集合?在流星中發佈一個具有一個發佈功能的集合

目前我有客戶端和服務器:

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

這並不工作服務器端的服務器控制檯打印在啓動時的數據對象。但是,客戶端只打印未定義的。我如何在客戶端上獲取這些數據?

+0

的CompanyData集是在客戶端上可見,但沒有datacollections集合。 –

+1

它在客戶端上不可用,因爲'CompanyData'集合在啓動時未被填充。在調用數據之前,您需要等待數據準備就緒。你確定你想要收集每個實體的路徑嗎? – MasterAM

+0

正如@MasterAM所暗示的,動態集合通常不是一個好的模式。 –

回答

0

試試這個:

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