使用mongodb中的运算符进行动态搜索

问题描述 投票:0回答:1

我是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()+ '/');
    }
});

当它运行时,它什么都没显示..有人可以帮助我吗?对不起我的愚蠢问题..

谢谢

mongodb meteor operator-keyword
1个回答
2
投票

问题可能来自这样一个事实:你没有构建一个正则表达式,而是一个简单的字符串:

Session.set('SearchItemName', '/'+ $itemName.val()+ '/');

为了构建一个正则表达式,你应该创建一个新的RegExp对象,用于Mongo $regexquery。您还应该重写“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}});
  }      
});
© www.soinside.com 2019 - 2024. All rights reserved.