Node Express Mongoose:编写 API 通过多个可选参数搜索数据

ron*_*til 4 regex mongoose node.js express mean-stack

我有一个搜索输入框,用户应该能够通过员工 ID 或名字或姓氏进行搜索。员工 ID 也是一个字符串。我有名为 profile 的 mongo 模型,其中包含员工信息。

我正在使用 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);
    });
  }
Run Code Online (Sandbox Code Playgroud)

rsp*_*rsp 5

代替:

Profile.find({ mid: nameRegex } ||
             { firstName: nameRegex } ||
             { lastName: nameRegex }, function (err, data) {
    // ...
});
Run Code Online (Sandbox Code Playgroud)

使用:

Profile.find({$or: [
    { mid: nameRegex },
    { firstName: nameRegex },
    { lastName: nameRegex }
]}, function (err, data) {
    // ...
});
Run Code Online (Sandbox Code Playgroud)