2016-08-06 8 views
0

Я выполняю запросы на некоторых объектах со связанными данными геокрии.Анализ запроса с использованием Geoquery

Однако ни один из запросов не работает и возвращает следующую ошибку

расположение объекта ожидается, массив расположение не в правильном формате

журналы

консоли показывают, что

зм, безусловно, является объектом, определенно является Parse Geopoint и имеет правильные координаты.

Я в тупике, любой совет оценил

let gp = null; 
if (search.hasOwnProperty("geo")) { 
console.log(`Geodata ${JSON.stringify(search.geo)}`); 
gp = new Parse.GeoPoint({ 
    latitude: search.geo.lat, 
    longitude: search.geo.long 
}); 

console.log(`GP type ${typeof gp}, GP ${JSON.stringify(gp)}`); 

let query = new Parse.Query("Place"); 
query.near("location", gp); 
query.find({ 
    success: (e) => console.log(`Geo near query ${JSON.stringify(e)}`), 
    error: (e) => console.log(`Geo near error ${JSON.stringify(e)}`) 
}); 
}; 
+0

является «расположение» хранения значений, как в Geopoints синтаксического анализа БД? я бы попробовал что-то подобное с 'query.withinMiles (" location ", gp, 1.0);' –

+0

Да, они сохранены как Geopoints, и я проверил тип на панели мониторинга. Я пробовал другие подобные GP-запросы, те же результаты. – kenwen

ответ

0

я создал что-то на моей стороне, что работа со следующим кодом:

let gp = new Parse.GeoPoint({ 
    latitude: 37.337845, 
    longitude: -122.037687 
    }); 

    // 1. first run this in order to save some location to your DB 
    var LocationTest = Parse.Object.extend("LocationTest"); 
    var locationObject = new LocationTest(); 
    locationObject.set("location",gp); 
    locationObject.set("name","location name test"); 

    locationObject.save().then(function(result){ 

    },function(error){ 

    }); 

    // 2. Uncomment and run this query after you save the object above 
    /* 
    var query = new Parse.Query("LocationTest"); 
    query.near("location",gp); 
    query.find().then(function(results){ 

    },function(error){ 

    }); */ 

Пожалуйста сначала запустить первую часть кода для того, чтобы сохраните местоположение в вашей БД и затем запустите вторую часть для запроса того, что вы сохранили.

Причина, по которой вы получаете эту ошибку может быть потому, что ваше местоположение не сохраняется как объект, а как массив в вашей базе данных или, может быть, потому что ваше поле местоположение не типа PFGeoPoint то, что я предлагаю вам, может быть, сначала запустить мой код и проверить, работает ли он, а затем, возможно, попытаться изменить, возможно, имя класса или имя поля в вашей базе данных и сохранить и запросить из другого поля.

Этот код работает для меня на синтаксическое-сервере 2.2.17 (последняя версия), так что пожалуйста, убедитесь, что ваш синтаксический анализ-сервер находится в актуальном состоянии, запустив НПМ установить на приложение

+0

Думаю, я решил, какая проблема. Кажется, что Geoqueries разбиваются, когда геопозиция пуста/не имеет данных. Имел несколько объектов без связанных геотетов, удалил их и, похоже, работал. Перейти к тесту – kenwen

0

некоторых экспериментов , обнаружил, что геокэры терпят неудачу, если какой-либо из запрошенных объектов не имеет связанных с ним геоданных.

Бит более серьезный, чем просто отсутствие геоданных, даже если у него есть свойство геоданных, и это свойство пусто, это сбой.

Решение, чтобы проверить, что широты и долготы существуют до того, что объект запроса

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