Nodejs可变路由

我有和variablesnodejs路由,我试图在MongoDB的使用mongoose的聚集函数中使用这些值:

apiRoutes.get('/val6/:_level/:location', function(req, res) { val6.aggregate([ { $match: { [req.params.location]:true } }, { $sample:{size:1} } ], function(err, val6) { res.json(val6); }) }); 

当我发送邮递员请求时,我得到一个val2设置为true的随机项目

邮递员请求

当我在我的match子句中添加另一个条件时,如下所示:

 $match: { [req.params.location]:true, level:1 } 

我绝对没有比赛,但在上面的截图,水平是一个。 我究竟做错了什么?

编辑一个

 $match: { level:1, [req.params.location]:true } 

切换值似乎解决了这个问题(所以我认为这是一个通常与计算的JavaScript值的错误),但导致我下一个问题,我实际上面临着。

 console.log(req.params.location); console.log(req.params.level) 

/ /logging'val6'(位置)和'1'(级别)在这样的代码内使用它们,不工作:

 $match: { level:req.params.level, [req.params.location]:true } 

所以硬编码的值工作,但variables值不。 任何人都有线索?