2017-04-05 111 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