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

アプリを実行すると、latestlist コレクションが常に空になります。これを達成するための最良の方法は何ですか?

前もって感謝します

4

1 に答える 1

1

Meteorlivedataパッケージは、Meteor.publish(..).

Tom Coleman は、ここで探していることを行うために Meteor を曲げる方法の良い例を示しました: Meteor では、サーバー側の mongo コレクションを別の名前で公開するにはどうすればよいですか?

基本的に、彼が提案したように、次のいずれかを行う必要があります。

  • カーソルをサブスクリプション名として_publishCursor渡して、その内部関数を呼び出します。PlayLists.find({})latestlists

-または-

  • 関数をコピーして_publishCursor、再利用できるようにパッケージに入れます。

どちらのアプローチも機能しますが、内部関数は変更される可能性があるため、内部関数の呼び出しには常に注意を払っているため、後者をお勧めします。

于 2012-09-04T15:58:10.353 に答える