Запрос поиска возвращает здесь пустое значение JSON ([]). Долгота и широта в порядке. После синтаксического анализа координат (с использованием parseFloat ()) в самом запросе поиска неопределенная ошибка не появляется. Может быть, пока он проверяет в базе данных, все еще есть проблемы с типами данных. И я не могу сохранить широту и долготу в виде цифры c, потому что mon goose не позволяет это.
router.get('/userlist/:lng/:lat', function (req, res) {
var db = req.db;
var lng = req.params.lng, lat = req.params.lat;
console.log("lng "+lng);
console.log("lat "+lat);
//console.log("type of lng "+typeof(lng));
//console.log("type of parseFloat lng "+typeof(parseFloat(lng)) );
var collection = db.get('userlist');
collection.find({
'location': {
$near: {
$geometry: {
type: "Point" ,
coordinates: [ parseFloat(lng), parseFloat(lat)]
},
$maxDistance: 2000,
$minDistance: 0
}
}
}, {}, function (e, docs) {
docs = JSON.stringify(docs);
console.log("docs "+docs);
res.send(docs);
if(e){
throw e;
}
});
});
Маршрут для сохранения записей в mongoDB. Есть ли проблема с createIndex или чем-то еще?
router.post('/adduser', function(req, res) {
var db = req.db;
var collection1 = db.get('userlist');
var data = req.body;
var postMessage = data.postMessage;
delete data["postMessage"];
var insertedDocID = '';
collection1.insert(data, function (err, result){
if (err === null) {
insertedDocID = result._id;
postMessage = JSON.parse(postMessage);
postMessage.userID = "'"+insertedDocID+"'";
postMessage.timeStamp = "'"+new Date().getTime() + "'";
var collection2 = db.get('messagelist');
collection2.insert(postMessage, function (err, result) {
res.send(
(err === null) ? { msg: '{result:'+ result._id + '}' } : { msg: '{result:-1}' }
);
});
}
else {
res.send(
{ msg: '{result:-1}' }
);
}
});
collection1.createIndex( { "location" : "2dsphere" } );
});
Я задавал этот вопрос ранее, когда поиск вернул 'undefined'