#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
?