我希望你们能提供帮助。我对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!
});
});
}
我确定我只是做了一些简单的错误,但我一直在摸不着头脑,并且无法超越它。任何帮助将不胜感激!
感谢。
答案 0 :(得分:2)
你也可以在每个变量前加上一个“+”符号来强制它们加入数字,即
{ $nearSphere : [+get.longitude, +get.latitude]
即使其中一个变量为负数也能正常工作。
答案 1 :(得分:1)
尝试get.longitude = parseFloat(get.longitude)
和get.latitude = parseFloat(get.latitude)
。