我有Node.js的MongoDb get请求。我想用变量(req.query.pauseTime)替换查询中的两个值。我怎么做。代码适用于数字,但不适用于普通变量。
我试过了
let min = req.query.pauseTime -120;
let max = req.query.pauseTime + 120;
然后尝试用{“$ gte”:min,“$ lte”:max}替换{“$ gte”:6,“$ lte”:12}
当我使用6和12时,我会回来
[ { _id: 6, count: 5 },
{ _id: 7, count: 8 },
{ _id: 9, count: 8 },
{ _id: 10, count: 2 },
{ _id: 12, count: 8 },
{ _id: 8, count: 7 },
{ _id: 11, count: 8 } ]
当用变量替换时,我得到一个空数组。
在以下代码中:
videoCommentsRoutes.route('/count').get(function (req, res) {
VideoComments.aggregate([ {"$match": {"pauseTime": {"$gte": 6, "$lte": 12} } },
{"$group" : {_id:"$pauseTime", count:{$sum:1}}}
]).exec(function (err, commCount){
if(err){
console.log(err);
}
else {
res.json(commCount);
}
});
});
那么,如何用变量替换数字6和12?
尝试这样,使用与pauseTimeQuery变量相同的查询
videoCommentsRoutes.route('/count').get(function (req, res) {
let min = Number(req.query.pauseTime) - 120;
let max = Number(req.query.pauseTime) + 120;
const pauseTimeQuery = {
"$gte": Number(min),
"$lte": Number(max)
}
VideoComments.aggregate([ {"$match": {"pauseTime": pauseTimeQuery } },
{"$group" : {_id:"$pauseTime", count:{$sum:1}}}
]).exec(function (err, commCount){
if(err){
console.log(err);
}
else {
res.json(commCount);
}
});
});
}