Использование Parse Javascript SDK Запрос GeoPoint внутриMiles

Я создаю приложение Parse и хочу иметь возможность получать все объекты на определенном расстоянии от одного объекта с помощью GeoPoints. Кажется простым, но следующий код возвращает [] (нет совпадений):

app.get('/photos', function(req, res) {

   var Photo = Parse.Object.extend("Photo");

   var query = new Parse.Query(Photo);
   query.equalTo("owner", Parse.User.current());
   query.find({
     success: function(results) {
       // Do something with the returned Parse.Object values
       //res.send(results);
       var photo = results[0];

       // Create a query for places
      var Photo = Parse.Object.extend("Photo");
      var query = new Parse.Query(Photo);
      // Interested in photos taken near this photo.
      query.withinMiles("coordinates", photo.coordinates, 500000);

      // Final list of objects
      query.find({
        success: function(photoObjects) {
           res.send(photoObjects);
        },
        error: function(error) {
         alert("Error: " + error.code + " " + error.message);
        }
      });
     },
     error: function(error) {
       alert("Error: " + error.code + " " + error.message);
     }
   });
});

Как ни странно, если я изменю строку query.withinMiles("coordinates", photo.coordinates, 500000); на query.near("coordinates", photo.coordinates);, то она будет работать без сучка и задоринки и вернет все фотографии (каждая из них имеет GeoPoint в радиусе примерно 5 миль от всех остальных в наборе данных примера, поэтому я использовал maxDistance 500000). чтобы проверить масштаб проблемы).

Проблема в том, что мне нужно иметь возможность ограничиться определенным радиусом, что, как я и думал, делает «внутри миль». Любые идеи, что я могу делать неправильно?


person BryanP    schedule 30.09.2014    source источник


Ответы (1)


На случай, если кто-то найдет это и поделится моими проблемами, проблема была в следующем:

Я предполагал, что все «столбцы» объектов данных при синтаксическом анализе рассматриваются как атрибуты. то есть - вы можете получить к ним доступ, используя расширение . оператор (фото.координаты).

Фактически, вы должны получить к ним доступ через photo.get("coordinates"), чтобы получить фактические объекты, содержащиеся в структуре данных.

Не уверен, почему описанный выше сценарий работал в случае функции «рядом», но, тем не менее, поведение работает правильно, когда я начал использовать метод доступа get для объектов данных Parse.

person BryanP    schedule 30.09.2014