2012-09-03 38 views
0

在我的應用程序中,我有一個視頻集合,它只帶有經過身份驗證的用戶的視頻,並希望發佈相同的集合,以便爲所有用戶提供最新的5個視頻。我正在做以下但沒有成功:如何在Meteor應用程序中以不同名稱發佈相同的集合?

//CLIENT 
PlayLists = new Meteor.Collection('playlists'); 
LatestLists = new Meteor.Collection("latestlists"); 

Meteor.autosubscribe(function() { 
    Meteor.subscribe('playlists', Session.get('listkey')); 
    Meteor.subscribe('latestlists');  
}); 

Template.latestlist.latest = function(argument) { 
    return LatestLists.find({}); 
}; 
Template.list.playlist = function(argument) { 
    return PlayLists.find({}); 
}; 

//SERVER 
PlayLists = new Meteor.Collection('playlists'); 
LatestLists = new Meteor.Collection("latestlists"); 

Meteor.publish('playlists', function (playlist) { 
    return PlayLists.find({}, {user:this.userId()}); 
}); 
Meteor.publish('latestlists', function(){ 
    return PlayLists.find({}, {sort:{when:-1}, limit:5}); 
}); 

當我運行該應用程序時,我的latestlist集合allways是空的。達到這個目標的最好方法是什麼?

在此先感謝

回答

1

流星livedata包做一些魔術集合&訂閱當你在Meteor.publish(..)返回遊標。

湯姆·科爾曼給了你可以如何彎曲流星做你在找什麼在這裏一個很好的例子:In Meteor how can I publish one server side mongo collection under different names?

基本上你應該做的,因爲他認爲,無論是: -

  • 調用內部_publishCursor函數傳入您的PlayLists.find({})遊標並將latestlists作爲您的訂閱名稱。

- 或 -

  • 複製_publishCursor功能,並把它變成一個包的可重用性。

這兩種方法都行得通,而且我傾向於後者,因爲我總是謹慎地調用內部函數,因爲他們可能會在你下面改變。

+0

它的工作!非常感謝! – Topicus

相關問題