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

Posted

技术标签:

【中文标题】Node Express Mongoose:编写 API 以通过多个可选参数搜索数据【英文标题】:Node Express Mongoose : writing API to search data by multiple optional params 【发布时间】:2017-08-09 04:28:37 【问题描述】:

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

我正在使用节点 Express 和猫鼬。我想要一个接收 id 或 firstname 或 lastname 作为请求参数的路由器,如下所示。

     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) 
    // ...
);

【讨论】:

以上是关于Node Express Mongoose:编写 API 以通过多个可选参数搜索数据的主要内容,如果未能解决你的问题,请参考以下文章

Node.js编写be的流程(express)

Node.js / Express / Mongoose - 如何发送 JSON 以及对象视图?

node.js + express.js:使用 mongodb/mongoose 处理会话

在 Node/Mongoose/Express 中保持 DB 数据属性私有

Node + Express + Passport + Mongoose:req.user 未定义

将图像文件从 React 前端上传到 Node/Express/Mongoose/MongoDB 后端(不工作)