2014-11-23 95 views
1

比方說,我有兩個流星收藏:「電臺」和「歌曲」。每首歌都有一個外線密鑰給一個電臺,以表明它在該電臺播放。流星收集極限

現在我要發佈各站的最後3名播放的歌曲,像這樣:

Meteor.publish("all-last-three-songs", function() { 
    var stations = Stations.find(); 
    var stationIDs = stations.map(function(station) { return station._id }); 
    var songs = Songs.find({station_id: {$in: stationIDs}}, {sort: {time: -1}, {limit: 3}}); 
    return songs; 
}); 

這僅發佈3當然所有站的歌曲。我怎樣才能實現每個電臺最後3首歌的光標都會返回?我不想在客戶端進行過濾。

謝謝! :)

回答

0

您可以通過使用地圖功能返回遊標數組。只需將您的歌曲查詢粘貼到您當前的地圖功能中。而不是返回一個id,它會返回給定ID的電臺的最後三首歌曲。

您也可以將其轉換爲數組數組或將其平面化爲單個數組。

然後,您可以在數據庫上爲ID爲該數組的所有歌曲執行新的查詢。

+0

謝謝!這裏有兩件事情:正如文檔所述,遊標需要來自不同的集合,因此無法在我的情況下以這種方式解決。返回一個數組不是很「流星式」,是嗎?我不認爲我可以得到那個很酷的完整堆棧反應。 – user1259201 2014-11-26 09:25:47