使用mongo.db和javascript过滤

时间:2015-06-17 22:16:32

标签: javascript node.js mongodb

我正在实现一个搜索栏,前端工作,我也实现了后端,我正在渲染页面,但我没有看到任何结果:

后端代码:

  var search = req.query.search;
  var query = { deleted: false, active: true };

  if (search) {
    var searchQuery = ".*" + search + ".*";
    _.extend(query, { name: { $regex: searchQuery, $options: 'i' } });
  }

  console.log(query);

  Product.find(query, function(err, products) {
    res.render('discover', {
      title: 'Discover',
      products: products,
      category: category,
      search: search
    });
  });
};

这是我的路线:

  app.get('/discover/search', discover.discover);

这是我前端的代码:

div.row
  div.col-lg-6
  div.col-lg-6(style='text-align: right;')
    div.col-sm-6
      form(action="/discover/search")
        .input-group
          input.form-control(type="text" name="search" placeholder="Search" value=search)
          span.input-group-btn
            button.btn.btn-primary(type='submit' style='border-right: 0px;') Go!

我正在做一个控制台日志,这就是我所看到的:

{已删除:false,   活动:是的,   标签:'search',   name:{'$ regex':'。 Tom。','$ options':'i'}}

我没有收到任何错误消息 - 即使我的页面上有一个名为Tom的产品,我在搜索时只看到一个空白页面。

我无法弄清楚我做错了什么。我认为它可能是正则表达式,我尝试改变它但我仍然看到同样的问题。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您的正则表达式完全不需要.*。只需要“汤姆”。

另一个注意事项:你的正则表达式中没有星星打印:.Tom.。但是,点字符与新行不匹配可能是个问题。