我在 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;
});
需要处理多个订阅问题的通用解决方案,而不是仅解决此问题的特定解决方案。