我是 Meteor 的新手,正在尝试向该网站添加一个非常简单的搜索功能。我知道 SO 上也有类似的问题,但答案并不适用。
搜索栏位于标题中。我已订阅并发布了搜索。但我不明白这之后会发生什么。如何从搜索栏发送数据以便搜索数据库。那么,需要在 header.js 中添加什么才能搜索数据库。
下面是相关代码。
header.js
Template.header.events({
'submit form': function(e) {
e.preventDefault();
var query = $(e.target).find('[name=search]').val();
***** What should I add here? *****
Router.go('searchResults');
}
});
搜索结果.html
<template name="searchResults">
<ul>
{{#each questions}}
<li>{{questionItems}}</li>
{{/each}}
</ul>
</template>
出版物.js
Meteor.publish('searchResults', function(searchValue) {
return Questions.find({
body: {
$regex: searchValue
}
});
});
路由器.js
Router.route('/searchResults', {
name: 'searchResults',
waitOn: function() {
return [Meteor.subscribe('searchResults')];
}
});
最佳答案
由于您使用路线来显示搜索结果,因此您只需将搜索字符串传递给路线即可。例如:
Template.header.events({
'submit form': function(e) {
e.preventDefault();
var query = $(e.target).find('[name=search]').val();
Router.go('/searchResults/'+query);
}
});
然后在你的 route :
Router.route('/searchResults/:searchValue', {
name: 'searchResults',
waitOn: function() {
return [Meteor.subscribe('searchResults',this.params.searchValue)];
},
data: function(){
return Questions.find();
}
});
无论如何,您的出版物已经在期待该查询字符串,因此您应该可以开始了!
关于javascript - 使用 Meteor 实现最简单的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31998550/