0

在我的应用程序中,我有一个集合,它是一个视频列表,它只带来经过身份验证的用户的视频,并希望发布相同的集合以带来来自所有用户的最新 5 个视频。我正在做以下但没有成功:

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

当我运行该应用程序时,我的最新列表集合始终为空。实现这一目标的最佳方法是什么?

提前致谢

4

1 回答 1

1

livedata您在Meteor.publish(..).

Tom Coleman 举了一个很好的例子,说明如何让 Meteor 做你想要的事情:在 Meteor 中,我如何以不同的名称发布一个服务器端 mongo 集合?

基本上你应该按照他的建议做,要么: -

  • 调用_publishCursor传入PlayLists.find({})光标并latestlists作为订阅名称的内部函数。

-或者-

  • 复制该_publishCursor函数并将其放入一个包中以实现可重用性。

这两种方法都行得通,我更喜欢后者,因为我总是对调用内部函数持谨慎态度,因为它们很容易在你下面发生变化。

于 2012-09-04T15:58:10.353 回答