【发布时间】:2015-05-24 21:25:38
【问题描述】:
我正在使用 Meteor 返回最接近用户地理位置的场地列表。我从服务器正确地进行了排序,但是数据在到达客户端时有点混乱。据我了解,一旦收到数据,客户端需要进行另一种处理。
我在服务器上的 publish.js 中有以下代码:
Meteor.publish('nearestVenues', function(params){
var limit = !!params ? params.limit : 50;
if (!!params && !!params.coordinates){
return Venues.find(
{ 'location.coordinates':
{ $near :
{ $geometry :
{ type : "Point" ,
coordinates : params.coordinates
},
$maxDistance : 6000,
spherical: true
}
}
}, {limit: limit});
} else {
return Venues.find({}, {limit: limit});
}
});
我的视图的模板助手中的以下内容不返回任何内容:
Template.VenueList.helpers({
venues: function(){
return Venues.find(
{ 'location.coordinates':
{ $near :
{ $geometry :
{ type : "Point" ,
coordinates : Session.get('currentUserCoords')
},
$maxDistance : 6000,
spherical: true
}
}
}, {limit: 10})
// return Venues.find({}, {limit: 5, sort: {_id: -1, createdAt: -1}});
}
编辑:从发布语句的开头删除了无关的params ? !!params : 50; 代码。
注意: 帮助器底部的注释掉的代码确实有效,所以我知道这是进行客户端排序的正确位置。那么,当信息通过 Mongo 地理空间方法排序时,如何进行客户端排序? 必须有一种方法可以将地理位置数据从离某个位置最近到最远排序——我在这里错过了什么?
【问题讨论】:
-
AFAIK,`minimongo 不支持服务器端支持的所有方法,只需检查 minimongo 支持的所有方法,如 $near、$geometry 和 $maxdistance
-
我也遇到过类似的问题,我觉得没办法。我的一个希望是有一种方法可以从查询返回实际距离并使用它。我是否正确,上面的代码没有返回距离值?
标签: javascript mongodb meteor geolocation minimongo