在Meteor应用程序的同一页面上处理多个订阅

时间:2015-08-29 22:18:34

标签: javascript mongodb meteor minimongo

我在Meteor应用的搜索结果页面上有多个订阅。因此,中间是项目搜索结果的模板,左侧是趋势项目的模板,右侧是相关项目的模板。

在服务器上,我通过使用文本搜索查询Mongodb来发布相关项目(右侧),这只能在服务器上进行,因为minimongo没有该功能。

但我也订阅了一个趋势项目(在左边),它抓取了一组不同的相同项目。孤立地,我收到了正确的结果,也就是说,当我注释掉趋势项的代码时,我得到了相关项的正确结果。反之亦然。但是当两者都离开时,它们似乎是从客户端上的相同集合中绘制而且结果是扭曲的。

有没有办法在同一页面上处理多个订阅?

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

});

publications.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;

});

处理多个订阅问题的一般解决方案,而不是解决此问题的特定解决方案,是可取的。

0 个答案:

没有答案