假设我有两个流星收藏:“电台”和“歌曲”。每首歌都有一个外键到一个电台,以显示它是在该电台播放的。
现在我想发布每个电台的最后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 :(得分:0)
您可以使用map函数返回游标数组。只需将歌曲查询粘贴到当前的地图功能中即可。它不会返回一个id,而是返回具有给定id的电台的最后三首歌曲。
您也可以将其转换为数组数组或将其展平为单个数组。
然后,您可以对数据库中的id为此数组的所有歌曲执行新查询。