如何根据外部api调用结果订购collection.find?

时间:2015-02-22 21:27:49

标签: meteor

我有一个名为events的集合。他们是地理定位的。 我想通过客户端和每个事件之间的距离(通过公路)向客户端显示事件列表。为了计算这一点,我使用HTTP.call来打开以流星方法包装的mapquest API。

我找不到为客户订购结果并保持反应性的好方法(自动显示新事件)。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以“观察”您的事件集合并创建一个新的仅客户端集合(或更改事件集合),该集合具有“distanceFromClient”字段,然后您可以按此排序。

    Events = new Meteor.Collection('events');


    if (Meteor.isClient) {
      GeoEvents = new Meteor.Collection(null);

      var eventsObserver = Events.find().observe({
            added: function(item) {
              item.distanceFromUser = distanceFrom(item);
              GeoEvents.insert(item);
            }
          });

      Template.myTemplate.helpers({
        events: function() {      
          return GeoEvents.find({},{sort: {distanceFromUser: 1});
        }
      });
   }