我在Parse Cloud Code中使用JavaScript SDK,试图编写一个过滤GeoPoint的查询。我一直收到错误:
{"code":141,"error":" Error: 102 $nearSphere: invalid geopoint object"}
我的代码如下所示:
Parse.Cloud.define("findPeopleNearby", function (request, response) {
Parse.Cloud.useMasterKey();
if (request.params.latitude && request.params.longitude) {
var point = new Parse.GeoPoint({ latitude: request.params.latitude, longitude: request.params.longitude });
console.log('would query off of GeoPoint: ' + JSON.stringify(point));
var places = Parse.Object.extend("UserLocation");
var placesQuery = new Parse.Query(places);
placesQuery.near("location", point);
placesQuery.find({
success: function (results)
{
console.log("Successfully retrieved " + results.length + " rows.");
response.success();
},
error: function (error)
{
response.error("Error: " + error.code + " " + error.message);
}
});
}});
我知道表中的数据没问题,因为我可以成功发出curl命令:
curl -X GET -H "X-Parse-Application-Id: xxxx" -H "X-Parse-REST-API-Key: yyyy" -G --data-urlencode 'limit=5' --data-urlencode 'where={ "location": { "$nearSphere": { "__type": "GeoPoint", "latitude": 37.33521504 , "longitude": -122.03254905 }, "$maxDistanceInMiles":10.0 } }' https://api.parse.com/1/classes/UserLocation
我最初在安装表上有了location属性(这是我希望它的位置),但我看到this Q&A并认为我会在自己的对象中尝试它,但似乎没有有所作为。
顺便说一句,如果我可以使这个查询起作用,我的下一次尝试是使用父指针加入Installation对象。我希望/假设如果我能理解导致此错误的原因,那将会有效。
由于
编辑控制台输出
would query off of GeoPoint: {"__type":"GeoPoint","latitude":"37.33521504","longitude":"-122.03254905"}
答案 0 :(得分:1)
长版供参考:
var lat, lng;
if (typeof request.params.latitude === "number") {
lat = request.params.latitude;
}
else {
lat = parseFloat(request.params.latitude);
// this could return NaN
}
if (typeof request.params.longitude === "number") {
lng = request.params.longitude;
}
else {
lng = parseFloat(request.params.longitude);
}
var point = new Parse.GeoPoint({ latitude: lat, longitude: lng });