我有一个搜索输入框,用户应该可以按员工ID或名字或姓氏进行搜索。员工ID也是一个字符串。我有名为个人资料的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);
});
}
最佳答案
代替:
Profile.find({ mid: nameRegex } ||
{ firstName: nameRegex } ||
{ lastName: nameRegex }, function (err, data) {
// ...
});
使用:
Profile.find({$or: [
{ mid: nameRegex },
{ firstName: nameRegex },
{ lastName: nameRegex }
]}, function (err, data) {
// ...
});
关于node.js - Node Express Mongoose : writing API to search data by multiple optional params,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42860492/