2

我在 Meteor 应用的搜索结果页面上有多个订阅。所以中间是商品搜索结果的模板,左边是热门商品的模板,右边是相关商品的模板。

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

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

有什么方法可以处理同一页面上的多个订阅?

趋势项目.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;
  }
});

相关项.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