2011-12-23 5 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! 
     }); 
    }); 

}

Я уверен, «Я просто делал что-то не так, но я некоторое время царапаю голову над этим и не могу пройти мимо него. Любая помощь приветствуется!

Спасибо.

+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] 

работает, даже если одна из переменных является отрицательным.

Смежные вопросы