Нет результатов поиска при публикации и подписке на одну коллекцию
Я использую Easy-Search пакет и хотел бы искать сообщения (или комментарии к этим сообщениям).
Проблема. Ничего не отображается при вводе запроса. Сообщения об ошибках, отображаемые как на консоли .log, так и на сервере.
Обновление:
Я сделал console.log как для публикации, так и для подписки. Таким образом, подписка возвращает console.log в браузере devtools, но публикация ничего не возвращает на серверный терминал.
Шаблон 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
Вы пытались использовать initEasySearch вместо createSearchIndex? Я использовал это, и все выглядит правильно:
News.initEasySearch(['title', 'body'], {
'limit': 3,
'use': 'mongo-db',
'returnFields': ['title', 'category', 'slug', 'coverImage', 'publishedAt']
})
Это приведет к поиску коллекции новостей по заголовку и телу полей, возвращая эти поля ниже. Затем, в html, я просто вызываю {{title}} и остальные поля, потому что returnFields - это то, что easySearch подписывает, чтобы отобразить его на интерфейсе.
ok, вот рабочая демонстрация:
https://jsfiddle.net/nke3qbxr/