请帮帮我。 我正在进行搜索功能。以下是我的代码和用户故事。我只能传递第一个用户故事,但不能传递其他故事。有人可以帮帮我。
用户故事:
作为用户,如果我使用技能和位置进行搜索,我应该得到与查询匹配的结果。
作为用户,如果我仍然只搜索技能,我应该得到与查询匹配的结果。
作为用户,如果我仍然只搜索位置,我应该得到与查询匹配的结果。
作为用户,如果我搜索无效技能(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 :(得分: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"&locationQuery="Mumbai