2011-12-23 11 views
1

皆さんが助けてくれることを願っています。私はnode.js/mongodbをかなり使い慣れていて、mongooseモデルクエリに変数を渡すのに問題があります。node.jsに変数を渡すmongoose find query

これを実行すると、経度/緯度(-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! 
     }); 
    }); 

を} I私は何か単純な間違ったことをやっているだけですが、私はしばらく頭を傷つけていて、それを越えることはできません。どんな助けでも大歓迎です!

ありがとうございました。

+0

get.longitude = parseFloat(get.longitude)とget.latitude = parseFloat(get.latitude) – alessioalex

+0

はい!それは完全にあなたに感謝しました! –

+0

私は自分のコメントを回答に入れているので、それをアップヴォートして受け入れることができるので、他の人はそれが答えられていることを知っています。 – alessioalex

答えて

1

get.longitude = parseFloat(get.longitude)get.latitude = parseFloat(get.latitude)を実行してください。

2

また、単に、すなわち、

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

は、変数の一つが負であっても動作し、数字にそれらを強制するために、各変数の前に「+」記号を入れることができます。

関連する問題