我正在创建一个 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("坐标", photo.coordinates, 500000);
到
query.near("坐标", photo.coordinates);
然后它可以顺利工作并返回所有照片(在样本数据集中,每个人都有一个 GeoPoint,距离所有其他人的半径大约 5 英里,因此我使用 maxDistance 500000 来测试问题的严重程度)。
问题是我需要能够限制到一个特定的半径,这就是我认为“withinMiles”正在做的事情。知道我可能做错了什么吗?
最佳答案
万一有人发现了这个并分享了我的麻烦,以下是问题所在:
我假设解析中数据对象的所有“列”都被视为属性。即 - 您可以使用 .运算符(照片.坐标)。
事实上,您必须通过 photo.get("coordinates") 访问它们才能获取数据结构中包含的实际对象。
不确定为什么上述场景在“near”函数的情况下有效,但是当我开始对 Parse 数据对象使用 get 访问器方法时,该行为仍然正常工作。
关于javascript - 使用 Parse Javascript SDK 查询 GeoPoint withinMiles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26128212/