Получение пустого значения json с ограничением $ near в запросе поиска - PullRequest
0 голосов
/ 27 января 2020

Запрос поиска возвращает здесь пустое значение 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'

...