1

我正在使用 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 地理空间方法进行排序时,如何进行客户端排序?必须有一种方法可以从离某个位置最近到最远的位置对地理位置数据进行排序——我在这里遗漏了什么?

4

1 回答 1

0

这可能是一个红鲱鱼,但我注意到您的第一个代码片段中的第三行似乎没有做任何事情:

params ? !!params : 50;

那条线应该做什么?也许如果解决了这个问题就可以解决问题?

于 2015-05-24T21:39:42.527 回答