2

Meteor アプリの検索結果ページに複数のサブスクリプションがあります。というわけで、真ん中がアイテムの検索結果のテンプレート、左側がトレンドアイテムのテンプレート、右側が関連アイテムのテンプレートです。

サーバー上で、minmongo にはその機能がないため、サーバー上でのみ可能なテキスト検索を使用して Mongodb にクエリを実行することにより、関連項目 (右側) を公開します。

しかし、同じアイテムの別のセットを取得するトレンド アイテム (左側) も購読しています。単独では、正しい結果が得られます。つまり、トレンド アイテムのコードをコメント アウトすると、関連するアイテムの正しい結果が得られます。およびその逆。しかし、両方が残っていると、クライアント上の同じコレクションから描画しているように見え、結果が歪んでしまいます。

同じページで複数のサブスクリプションを処理する方法はありますか?

trendingItems.js

Meteor.subscribe('trendingItems');

Template.trendingItems.helpers ({

  trendingItems: function() {
    results = Items.find({}, {
      fields : { follows :  1, title: 1, itemId: 1 },  
      sort   : { follows : -1 }, 
      limit  : 5
    }).fetch();
    return results;
  }
});

relatedItems.js

Template.relatedItems.helpers ({

  relatedItems: function() {
    return Items.find();
  }

});

出版物.js

Meteor.publish('relatedItems', function(searchString) {
  return Items.find(
    { $text: { $search: searchString } }
  );
});

Meteor.publish('trendingItems', function(options) {

  results = Items.find({}, {
    fields : { follows :  1, title: 1, itemId: 1 },
    sort   : { follows : -1 },
    limit  : 5
  }).fetch();
  return results;

});

この問題だけを解決する特定のソリューションではなく、複数のサブスクリプションを処理する問題に対する一般的なソリューションが望ましいです。

4

0 に答える 0