2014-11-23 96 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