【发布时间】:2015-05-04 20:52:43
【问题描述】:
我有一个歌曲集,其中包含以下格式的数据:
{artist:"Dream Theater", title: "Pull me under"}, {artist:"Dream Theater", title: "Finally free"}
我正在使用包 mizzao-autocomplete 有超过 5000 个条目,所以我肯定需要服务器端自动完成。 在服务器上我发布了集合:
Meteor.publish("autocompleteArtists", function(selector, options) {
Autocomplete.publishCursor(Songs.find(selector, options), this);
this.ready();
});
客户端订阅如下:
Template.home.helpers({
settings: function() {
return {
position: "top",
limit: 5,
rules: [{
collection: 'Songs',
subscription: 'autocompleteArtists',
field: "artist",
template: Template.songItem
}]
};
}
});
我应该在 settings() 函数中同时拥有收藏和订阅吗?
最后一部分,客户端模板:
{{> inputAutocomplete settings=settings id="artistInput" type="text" placeholder="Artist" length="20"}}
我的目的是寻找一个艺术家,当我选择它时,订阅一个简单的服务器发布,它返回属于该艺术家的所有歌曲。问题是,如果我有同一个艺术家的多个条目,当然,结果列表会多次显示该艺术家。我需要以某种方式发布一个“独特”的发布,它会返回所有艺术家,但 Meteor 中没有这样的功能。我发现了一些实现聚合和不同的东西,但我看不到如何使用 Autocomplete publishCursor 功能......我的临时解决方案是非规范化并添加 Artists 集合,但我不应该这样做。
有没有更简单的方法?
【问题讨论】:
标签: meteor