Передача переменных в node.js mongoose найти запрос - PullRequest
1 голос
/ 23 декабря 2011

Я надеюсь, что вы, ребята, можете помочь. Я довольно новичок в node.js / mongodb, и у меня возникают проблемы при передаче переменных в запрос модели мангуста.

Если я запускаю это, передавая долготу / широту (-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 ]

2 голосов
/ 28 декабря 2011

Вы также можете просто поставить знак «+» перед каждой переменной, чтобы привести их к числам, т. Е.

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

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

1 голос
/ 26 декабря 2011

Попробуй сделать get.longitude = parseFloat(get.longitude) и get.latitude = parseFloat(get.latitude).

...