我是Meteor和MongoDB的新手。我想问一下如何在MongoDB中动态搜索数据。我的尝试是:
Template.MainTemplate.ItemsFounded = function() {
return ITEM.find({ItemName:{$regex: Session.get('SearchItemName')}});
};
Template.TemplateSearchItem.events({
'click .SearchItem' : function() {
var $itemName = $('#TextboxSearchItemName');
Session.set('SearchItemName', '/'+ $itemName.val()+ '/');
}
});
当它运行时,它什么都没显示..有人可以帮助我吗?对不起我的愚蠢问题..
感谢
答案 0 :(得分:2)
问题可能来自这样一个事实:你没有构建一个正则表达式,而是一个简单的字符串:
Session.set('SearchItemName', '/'+ $itemName.val()+ '/');
为了构建正则表达式,您应该创建一个新的RegExp
对象,以便在Mongo $regex
查询中使用。您还应该重写“ItemsFounded”,因为它不是在Meteor中声明助手的正确方法:
Template.TemplateSearchItem.events({
'click .SearchItem' : function() {
var $itemName = $('#TextboxSearchItemName');
Session.set('SearchItemName', $itemName.val());
}
});
...
Template.MainTemplate.helpers({
ItemsFounded: function() {
var regex = new RegExp(Session.get('SearchItemName'), 'i'); //'i' for case insensitive search
return ITEM.find({ItemName:{$regex: regex}});
}
});