I use https://matteodem.github.io/meteor-easy-search/ throughout my app with a fair amount of success but there are still some concepts in its API that I struggle with.
Right now I have a search bar at the top of my site that is an easy-search input component. When you type in it, it pops up a search interface (like atmosphere) that filters my content fine.
However, I configured it so that if you submit the form it takes you to a new route (‘search/[terms]’) to display a fuller listing of search terms. This I configured as a separate index.
this page also has its own search input at the top of the page. I can easily get the search terms from the url (I use flowrouter), but I can’t figure out how to:
- prepopulate the search input on that page (yes, I could use $.val(), but I imagine there must be a component method for this.
- perform the search and display the first results.
the docs refer to using:
// index instanceof Index
const cursor = index.search('Marie')
const docs = cursor.fetch()
// do stuff
which is fine, if I do that in my onrendered I do get results:
terms = FlowRouter.getParam('terms');
console.log('terms:', terms);
const cursor = ContentSearchPageIndex.search(terms);
const docs = cursor.fetch();
console.log('cursor', cursor);
console.log('docs', docs);
that does spit out the docs in the console. But in my template, no results show up:
{{> EasySearch.Input index=contentSearchPageIndex charLimit=2 noDocumentsOnEmpty=true attributes=searchBoxAttributes}}
<small class="text-muted">{{start}} to {{end}} of {{count}} results</small>
<ul class="list-group list-group-flush">a
{{#EasySearch.Each index=contentSearchPageIndex }}
{{>content_search_list_item item=this}}
{{/EasySearch.Each}}
</ul>
I know I can make this work by defining a helper function that returns the cursor and manually setting the input to my URL value, but I figured there might be more standard way of doing it using easy-search api functions.
thanks,
cliff