Синтаксический анализ геозапросов всегда пустой

#objective-c #parse-platform

#objective-c #разбор-платформа

Вопрос:

В настоящее время я пытаюсь заставить систему геозапросов Parse работать. В моем браузере данных у меня есть установка с ключевым «местоположением» типа geo-point, в котором установлена географическая точка с широтой 30.27263636013176 и долготой -97.75766807716373.

Однако, если я пытаюсь выполнить запрос с помощью следующего кода, я всегда получаю «результаты»: [] .

 curl -X GET  
-H "X-Parse-Application-Id: myAppKey"  
-H "X-Parse-REST-API-Key: myAPIKey"  
-G  --data-urlencode 'limit=10' 
--data-urlencode 'where={
"location": {
  "$nearSphere": {
    "__type": "GeoPoint",
    "latitude": 30,
    "longitude": -97
  }
}
}' 
https://api.parse.com/1/classes/PlaceObject
  

Обратите внимание, что запрос выполняется успешно; ошибок нет. Проблема в том, что у меня должна появиться установка.

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

Ответ №1:

Installation Класс не может быть запрошен у клиента по уважительной причине. В классе хранится слишком много конфиденциальной информации Installation , чтобы разрешить запросы от клиента.

Либо переместите location свойство в другой класс, который вы можете запросить, либо запросите его в облачной функции.

Вы можете запросить его в облачном коде, если используете Parse.Cloud.useMasterKey(); , хотя я настоятельно рекомендую использовать другой класс для хранения location .

Комментарии:

1. Итак, есть ли способ переместить свойство location в другой класс, но сохранить эту информацию, связанную с отдельными установками? В идеале я хотел бы иметь возможность отправлять push-уведомления на все устройства рядом с каким-либо местоположением

2. Также я не уверен, что понимаю, что вы имеете в виду, что класс установки не может быть запрошен. Я могу задавать запросы для любого количества пользовательских тегов в установке, сколько захочу, и они работают. Я могу задавать запросы для каналов в классе установки, и они работают. Это единственный столбец в установках, который, похоже, неправильно запрашивает.

3. Можете ли вы подтвердить, что у вас есть только один столбец типа GeoPoint в вашем классе установки?

4. пользователь3684980 — чтобы ответить на ваш вопрос выше, вы могли бы создать другую таблицу и использовать ObjectId или installationId в качестве внешнего ключа. Я на самом деле пытаюсь сделать то же самое, что и вы, кажется, так что я с интересом наблюдаю за этим ответом. Когда я пытаюсь использовать облачный код, я получаю сообщение «Ошибка 102 $ nearSphere: недопустимый объект геопункта», что побудило меня попробовать то, о чем вы спрашиваете в своей OP.

5. @Jason Я тоже сталкиваюсь с подобной проблемой. Мне было интересно, решили ли вы, ребята, это?

Ответ №2:

Должен ли URL быть https://api.parse.com/1/classes/Installation вместо https://api.parse.com/1/classes/PlaceObject ?