我有变量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
当我在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
}
因此硬编码值有效,但变量值不起作用。有人知道吗?