2016-04-14 36 views
0

Muhtemelen birileri için gerçekten basit bir soru. Bir URL gönderiyorum (ve örnek localhost:3000/services?lat=50&long=30). Latifi ve uzun URL'yi almak ve bir Geospacing sorgusuna yerleştirmek istiyorum. Geçerli kod ekranda hiçbir şey üretmez, ancak lat ve long için doğru değerleri kaydeder:MongoDB'nin geospacing ve Node ile URL parametrelerini kullanma

exports.findAll = function(req, res) { 
    var lat = req.query.lat; 
    var long = req.query.long; 
    console.log(lat + long); 

    db.collection('services', function(err, collection) { 
     collection.find({ loc: { $geoWithin: { $centerSphere: [ [ lat, long ] , 
                100/3963.2 ] } } }).toArray(function(err, items) { 
      res.send(items); 
     }); 

    }); 
}; 
+0

Tüm parametreler aslında "dizgiler" dir, bu nedenle sayısal bir değer beklediğiniz yerde (genellikle koordinatlar) parseFloat'a ihtiyacınız vardır. Ama aynı zamanda MongoDB'deki coğrafi konumun [[boylam ”,“ enlem ”]' de olması gerektiği için yanlış sıralamaya sahipsiniz. Bu aslında her operatörde iyi belgelenmiştir. yani. [** $ centerSphere'] (https://docs.mongodb.org/manual/reference/operator/query/centerSphere/) ** önemli ** kutusunda, sayfanın biraz aşağısında. –

cevap

0

Sussed.

Lateks ve uzun değişkenler üzerinde parseInt kullanılması gerekiyor. Teşekkürler.