2011-12-23 27 views
1

我希望你們能幫忙。我對node.js/mongodb相當陌生,而且我無法將變量傳遞給mongoose模型查詢。將變量傳遞到node.js中mongoose find查詢

如果我運行這個,手動傳遞經度/緯度(-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

試着做get.longitude = parseFloat(get.longitude)和get.latitude = parseFloat(get.latitude) – alessioalex 2011-12-23 12:18:48

+0

是的!這很有效,謝謝你! – 2011-12-24 09:16:25

+0

我已將我的評論置於答案中,以便您可以贊成並接受它,所以其他人知道它已被回答。 – alessioalex 2011-12-25 20:24:14

回答

1

嘗試做get.longitude = parseFloat(get.longitude)get.latitude = parseFloat(get.latitude)

2

你也可以只放一個「+」號在每個變量前面強迫他們爲數字,即

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

作品即使變量之一爲負。