NodeJS Rest Services将参数传递给$ near查询MongoDB

时间:2016-05-26 12:42:31

标签: node.js mongodb rest mongoose

我已经开发了NodeJS和MongoDB的Rest服务列表。其中一个服务执行$ near mongodb查询,以便通过特定位置将所有元素检索到特定范围

 router.route("/api/geo_cars")
.get(function(req,res){
    var max = 1000;
    var response = {};
    mongoOOp.find({
 location:
   { $near :
      {
        $geometry: { type: "Point",  coordinates: [ 12.560945, 41.957482 ] },
        $maxDistance: max
      }
   }
},function(err,data){
    // Mongo command to fetch all data from collection.
        if(err) {
            response = {"error" : true,"message" : "Error fetching data"};
        } else {
            response = {"error" : false,"message" : data};
        }
        res.json(response);
    });
});

该服务是一项获取服务,效果很好。 现在我想通过服务传递给$ near查询maxDistance值和坐标,我只尝试这种方式只有maxDistance:

router.route("/api/geo_cars/:maxDistance")
.get(function(req,res){
    var max = req.params.maxDistance;
    var response = {};
    mongoOOp.find({
 location:
   { $near :
      {
        $geometry: { type: "Point",  coordinates: [ 12.560945, 41.957482 ] },
        $maxDistance: max
      }
   }
},function(err,data){
    // Mongo command to fetch all data from collection.
        if(err) {
            response = {"error" : true,"message" : "Error fetching data"};
        } else {
            response = {"error" : false,"message" : data};
        }
        res.json(response);
    });
});

但是当我在postman中运行服务时,响应是一个错误"错误提取数据"。 任何帮助我如何通过服务作为参数将此值传递给$ near查询? 感谢

1 个答案:

答案 0 :(得分:1)

Express将所有传入的值视为字符串。将maxDistance转换为整数应该有效。

var max = parseInt(req.params.maxDistance);