我有一段不起作用的代码。我正试图从我的路线中获取价值。你可以看到我记录了req.param.val2的值,在我的情况下是1。
apiRoutes.get('/val1/:val2/:val3', function(req, res) {
console.log(req.params.val3);
console.log(req.params.val2);
val1.aggregate([
{
$match:
{
val2:req.params.val2
}
},
{
$sample:{size:1}
}
],
function(err, val1) {
res.json(val);
})
});
当我用值1替换req.params.val2时,就像这里:
$match:
{
val2:1
}
代码有效。我想我犯了一个愚蠢的小错误,但我无法确切地指出究竟是什么。
谁可以? :)
答案 0 :(得分:0)
我发现问题是什么,而且非常令人沮丧。
在mongodb中,我的文档设置如下
{
"_id" : ObjectId("59199fc3d79317d2bc587659"),
"text" : "some text",
"level" : 1,
"val3" : true,
"val2" : false,
"val4" : false,
"val5" : false
}
不知何故,req.params.val2的值为1,但是键入String而不是Number / int。
可以通过将值转换为int或将数据库中的al值设置为String来解析。
答案 1 :(得分:0)
您可以尝试将字符串转换为整数,如下所示:
$match:
{
val2 : parseInt(req.params.val2)
}