我正在尝试创建一个小规模的流星应用,以便在mongodb集合中搜索我已经添加到其中的任何数据。
我现在显示整个集合,但是如果我在表单中输入搜索字符串,我希望它只显示包含相同搜索字符串的mongodb条目。这是我到目前为止所得到的。
app.js:
Persons = new Mongo.Collection("persons");
if (Meteor.isClient) {
Template.body.helpers({
persons: function() {
return Persons.find({}, {sort: {createdAt: -1}});
}
});
Template.person.persons({
"submit .person-search": function(event) {
event.preventDefault();
var input = event.target.text.value;
return Persons.find({
text: input
});
}
});
app.html中的搜索表单
<form class = "person-search">
<input type = "text" name = "text" placeholder = "Type to search for people" />
</form>
app.html中的集合显示
<ul>
{{#each persons}}
{{> person}}
{{/each}}
</ul>
每当我输入搜索字符串时,集合将刷新,但会继续显示集合中的所有数据。我尝试过使用像这样的会话,我从这里开始:How to Search and output from Meteor Collection
Template.person.persons = function() {
return Persons.find({
person: { $regex: Session.get('prefix') + ".*", $options: 'i'}});
};
Template.person.events({
"submit .person-search": function() {
Session.set('prefix', $('.person-search').val());
}
});
然而,这似乎并不适合我。如果有人能指出我正确的方向,将不胜感激。谢谢大家的时间。