请帮帮我。我正在制作搜索功能。下面是我的代码和用户故事。我只能传递第一个用户故事,而不能传递其他故事。有人可以帮我吗?
用户故事:
-
作为用户,如果我使用技能和位置进行搜索,我应该得到与查询匹配的结果。
-
作为用户,如果我只使用技能进行搜索,我应该得到与查询匹配的结果。
-
作为用户,如果我只使用位置进行搜索,我应该得到与查询匹配的结果。
-
作为用户,如果我使用无效技能(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); } }); } };
对于这种可选支持,最好在 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);
}
});
}
};
乌帕特:
将您的路由定义为: searchRoute.get('/', search.get);
您可以将查询参数发送为(通过 POSTMAN(:
localhost:3000/api/search/?skillsQuery="java,javascript"&locationQuery="Mumbai