将变量传递给node.js mongoose查找查询

时间:2011-12-23 12:04:31

标签: mongodb node.js geospatial mongoose

我希望你们能提供帮助。我对node.js / mongodb很新,我在将变量传递给mongoose模型查询时遇到了麻烦。

如果我运行它,手动传递经度/纬度(-0.18,51.24)作为字符串然后它完美地工作并返回数据库中的大量对象。

Venue.find( { location : { $nearSphere : [-0.18, 51.24], $maxDistance : 25/3959 } }, null, {limit: 50}, function(err, results){
    results.forEach(function(result){
       console.log('Found a record');
    });
}); 

但是,如果我尝试将这些坐标作为变量传递到其中运行的函数中,则不会返回任何结果:

function generateWorld(get) {

    console.log('Generating for x:' + get.longitude + ' y:' + get.latitude); // Console logs correct coords

    Venue.find( { location : { $nearSphere : [get.longitude, get.latitude], $maxDistance : 25/3959 } }, null, {limit: 50}, function(err, results){
        results.forEach(function(result){
           console.log('Found a record'); // <-- This doesn't return any results!
        });
    }); 

}

我确定我只是做了一些简单的错误,但我一直在摸不着头脑,并且无法超越它。任何帮助将不胜感激!

感谢。

2 个答案:

答案 0 :(得分:2)

你也可以在每个变量前加上一个“+”符号来强制它们加入数字,即

{ $nearSphere : [+get.longitude, +get.latitude]

即使其中一个变量为负数也能正常工作。

答案 1 :(得分:1)

尝试get.longitude = parseFloat(get.longitude)get.latitude = parseFloat(get.latitude)