Nodejs变量路由

时间:2017-08-22 20:44:56

标签: node.js mongodb express mongoose postman

我有变量nodejs route,我正在尝试使用mongoose在mongodb的aggrerate函数中使用这些值:

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

Postman request

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

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

我绝对没有匹配,但在与上面相同的屏幕截图中,级别为1。我做错了什么?

编辑一个

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

}

切换值似乎可以解决问题(所以我认为这是计算javascript值的一般错误)但是让我想到了我实际面临的下一个问题。

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

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

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

}

因此硬编码值有效,但变量值不起作用。有人知道吗?

0 个答案:

没有答案