如何进行搜索功能

时间:2017-04-05 05:49:06

标签: node.js mongodb express mean-stack

请帮帮我。 我正在进行搜索功能。以下是我的代码和用户故事。我只能传递第一个用户故事,但不能传递其他故事。有人可以帮帮我。

用户故事:

  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);
            }            
        });
     }
    };
    

1 个答案:

答案 0 :(得分: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);

您可以将查询参数发送为(通过POSTMAN):

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