来自sub geo id XXX的异常TypeError:无法读取属性' lng'为null

时间:2015-08-03 15:18:42

标签: javascript meteor geolocation

我正在使用Mdg:geolocation并拥有以下应用程序。

查找用户的当前位置并检索距用户一定距离内的帖子(收到错误,页面在加载屏幕处卡住)。 lng的null意味着loc未定义。

公布

  Meteor.publish('geo', function(loc) {     
    return Posts.find({
      "loc": {            // error line for server.js 13:30
        $near: {
          $geometry: { type: "Point", coordinates: [loc.lng, loc.lat] }, 
           .....


路由器

Router.route('/near/:postsLimit?', { 
  name: 'nearPosts',
  waitOn: function(){ 
    return Meteor.subscribe('geo');
  }
});


Error message

1 个答案:

答案 0 :(得分:3)

在您的路线中(转载如下),只有this.params.postsLimit,没有this.params._id

Router.route('/near/:postsLimit?', { 
  name: 'nearPosts',
  waitOn: function(){ 
    return Meteor.subscribe('geo', this.params._id); //to change reference id
  }
});

因此,发布函数会抛出错误,因为没有loc来获取loc.lng

您的路线包含/near/:postsLimit?。对于this.params._id,您需要/near/:_id/near/:_id/:postsLimit?之类的内容,它们会同时为您提供。请参阅docs

编辑:您需要拥有一些包含纬度和经度的位置数据对象,以便传入您的订阅,如下所示:

Router.route('/near/:postsLimit?', { 
  name: 'nearPosts',
  waitOn: function(){ 
    return Meteor.subscribe('geo', locationObject);
  }
});

由您决定使用locationObject的内容。