2017-03-17 53 views
1

我有一個搜索輸入框,用戶應該可以通過員工ID或名字或姓氏進行搜索。員工ID也是一個字符串。我有稱爲個人資料的mongo模型,它具有員工信息。Node Express Mongoose:通過多個可選參數編​​寫API來搜索數據

我正在使用node express和mongoose。我想有一個路由器接收id或名字或姓氏作爲請求參數如下。

 this.router.get('/name/:name', this.getMidSearchResults); 

private getMidSearchResults(req: Request, res: Response, next: NextFunction)   { 
    var nameRegex = {"$regex": new RegExp('^' + req.params.name.toLowerCase(), 'i')}; 

    Profile.find({ mid: nameRegex } || {firstName: nameRegex} || {lastName: nameRegex}, function(err, data) { 
     if (err) throw err; 
     res.send(data); 
    }); 
    } 

回答

1

相反的:

Profile.find({ mid: nameRegex } || 
      { firstName: nameRegex } || 
      { lastName: nameRegex }, function (err, data) { 
    // ... 
}); 

使用:

Profile.find({$or: [ 
    { mid: nameRegex }, 
    { firstName: nameRegex }, 
    { lastName: nameRegex } 
]}, function (err, data) { 
    // ... 
}); 
+0

工作!非常感謝 – ronypatil