我在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;
});
处理多个订阅问题的一般解决方案,而不是解决此问题的特定解决方案,是可取的。