2017-04-05 75 views
0

请帮我解决。 我正在进行搜索功能。以下是我的代码和用户故事。我只能通过第一个用户故事,而不能通过其他故事。有人能帮助我吗?如何使用搜索功能

用户故事:

  1. 作为一个用户,如果我搜索的技能和位置我应该得到与查询相匹配的结果。

  2. 作为一个用户,如果我只搜索技能,我仍然应该得到与查询相匹配的结果。

  3. 作为一个用户,如果我只用位置搜索,我应该得到与查询匹配的结果。

  4. 仿佛我与无效的技能(J,A,B)或位置我不应该得到这不符合查询结果的搜索用户..

    var search = { 
    get: function (req, res) { 
        var locationQuery = req.params.locationQuery, 
        skillsQuery = req.params.skillsQuery; 
    
        Jobs.find({state: { "$regex": locationQuery, "$options": "i" }, Skills: { "$regex": skillsQuery, "$options": "i" }}, function(err, result) { 
         if (err) { 
          console.log('Not a Valid Search'); 
          res.status(500).send(err, 'Not a Valid Search'); 
         }else { 
          res.json(result); 
         }    
        }); 
    } 
    }; 
    
+0

即使是第4个故事也应该工作.. – sidgate

+0

用户故事1和4需要'state'和'skill'匹配,而用户故事2和3匹配'state'或'skill'。如果我的理解是正确的,那么你在这里有两个选择。简单的选择是编写差异mongo查询并根据搜索查询运行适当的查询。第二种选择是根据搜索查询建立动态mongo查询。第一个选项很简单,但它需要多个mongo查询,而第二个选项比较困难,但允许您在单个查询中管理所有内容。 –

+0

用户故事4必须失败,因为它是无效的输入权限。如果用户输入单个字符并开始搜索,那么它不应该给出结果,它必须失败。正如你所说的用户故事2和3的第二个选项,你能简单地解释一下怎么做? – Arjun

回答

0

对于这种的可选支持,在GET中将搜索参数作为查询会更好。您可以参考以下代码片段。

var search = { 
 
get: function (req, res) { 
 
    var query = {}; 
 
    if(req.query.locationQuery){ 
 
     query.state = { "$regex": req.query.locationQuery, "$options": "i" }; 
 
    } 
 
    if(req.query.skillsQuery){ 
 
     query.Skills = { "$regex": req.query.skillsQuery, "$options": "i" } 
 
    } 
 

 
    Jobs.find(query, function(err, result) { 
 
     if (err) { 
 
      console.log('Not a Valid Search'); 
 
      res.status(500).send(err, 'Not a Valid Search'); 
 
     }else { 
 
      res.json(result); 
 
     }    
 
    }); 
 
} 
 
};

UPADTE:

定义为您的路线: searchRoute.get('/', search.get);

而且,您可以发送您的查询参数(通过邮差):

localhost:3000/api/search/?skillsQuery="java,javascript"&lo‌​cationQuery="Mumbai

+0

Hey Tolsee,当我试着用这个查询来查询每个查询时,它显示了所有的作业列表。 – Arjun

+0

你能分享你的网址吗? – Tolsee

+0

如果您的查找方法正在向您发送所有作业,而查询设置不正确。你可能想检查一下。仅供参考,你应该提供搜索参数作为查询,如'/端点/搜索/?locationQuery =你的reg-ex' – Tolsee