从单个集合发布和订阅时没有搜索结果

时间:2015-10-17 03:38:42

标签: javascript meteor publish-subscribe

我正在使用易于搜索套餐,并希望搜索帖子(或评论这些帖子)。

问题:输入搜索时没有显示任何内容。在console.log和服务器上都没有显示错误消息。

更新: 我在发布和订阅上都做了console.log。因此,subscribe返回浏览器devtools上的console.log,但发布不会返回服务器终端上的任何内容。

模板html

<template name="searchPosts">
  {{> esInput id="main" index=indexes placeholder="Search.." }}  

    {{#esEach index="posts"}}
      {{> postItem}}
    {{/esEach}}

    {{#esEach index="comments"}}
      {{> postItem}}
    {{/esEach}}
</template>

模板js - 客户端

Template.searchPosts.onCreated(function () {
  var self = this, instance;

  instance = EasySearch.getComponentInstance(
    { id: 'main', index: 'posts'},
    { id: 'main', index: 'comments'}
  );
  instance.on('searchingDone', function (searchingIsDone) {
    searchingIsDone && console.log('I am done!');
  });
  instance.on('currentValue', function (val) {
    console.log('The user searches for ' + val);
  });
  this.subscribe("allDocs");
}); 

Template.searchPosts.helpers({
  indexes : function () {                 
    return ['posts', 'comments']; 
  },
  posts: function () {    
    return Posts.find();
  }
});

1 个答案:

答案 0 :(得分:1)

您是否尝试过initEasySearch而不是createSearchIndex?我用过这个,一切都正常显示:

News.initEasySearch(['title', 'body'], {
'limit': 3,
'use': 'mongo-db',
'returnFields': ['title', 'category', 'slug', 'coverImage', 'publishedAt']
})

这将搜索字段标题和正文的新闻集合,返回以下字段。然后,在html上,我只调用{{title}}和其他字段,因为returnFields实际上是easySearch订阅的内容,以便在前端显示它。

好的,这是一个有效的演示: https://jsfiddle.net/nke3qbxr/