【发布时间】:2016-11-22 13:20:21
【问题描述】:
下面是我的路线代码:-
app.get('/server/lead/get/:id?', leadCtrl.get);
app.get('/server/lead/filter/:filterQuery', leadCtrl.get);
正如你在上面看到的,我使用不同的路由来访问相同的控制器方法leadCtrl.get。
现在,我想要类似路线app.get('/server/lead/get/:id?:filter?', leadCtrl.get); 的东西。所以,我可以得到参数 req.params.id 或 req.params.filter 但一次只能得到一个。
【问题讨论】:
-
id和filter只是占位符名称,它们的含义完全取决于您。你不妨称它为:idOrFilter并使用req.params.idOrFilter来涵盖这两种情况。 -
感谢您的回复,但在我的情况下,过滤器参数有 json,我在服务器中处理这个是不同的,即
var query; if (req.user.userType == 'super_admin') query = {}; else if (req.user.roleOrder < config.highestRoleOrder) { query = { companyId: req.user.companyId, createdBy: req.user._id }; } if (req.params.id) { query._id = req.params.id; } else if (req.params.filterQuery) { _.merge(query, JSON.parse(req.params.filterQuery)) } Lead.find(query) -
也许我不明白你到底想要什么:你希望
/server/lead/get/:id?和/server/lead/get/:filter?同时存在? -
@robertklep 看起来我们这里有一个chameleon question :)
-
@robertklep 是的,我就是这样。