Minimongo 无法在客户端进行集合排序
Posted
技术标签:
【中文标题】Minimongo 无法在客户端进行集合排序【英文标题】:Minimongo cannot do collection sort on client side 【发布时间】: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 我也遇到过类似的问题,我觉得没办法。我的一个希望是有一种方法可以从查询返回实际距离并使用它。我是否正确,上面的代码没有返回距离值? 【参考方案1】:这可能是一个红鲱鱼,但我注意到您的第一个代码 sn-p 中的第三行似乎没有做任何事情:
params ? !!params : 50;
那条线应该做什么?也许如果解决了这个问题就可以解决问题?
【讨论】:
这一行可能没用。但由于它是一个没有任何副作用的条件表达式,它不会对 AFAIK 造成伤害。 @SylvainLeroux 我同意它不会造成伤害。只是质疑它是否应该做某事而不做某事是导致问题的原因...... 是的,好眼力的家伙。这个条件是无用的,已从组合中删除。但它并没有改变任何东西。以上是关于Minimongo 无法在客户端进行集合排序的主要内容,如果未能解决你的问题,请参考以下文章