Meteor中的数据无法正确加载

时间:2015-12-07 06:33:30

标签: javascript meteor iron-router

在meteor我的页面加载数据时,我的常规设置是:

var data

Router.route('/userinfo/edit', {
  loadingTemplate: 'Loading',
  subscriptions: function(){
    console.log('And now we wait')
    return Meteor.subscribe('_userinfodb', Meteor.userId())
  },
  action: function(){
    console.log('RonPaulItsHappening.gif')
    data = UserInfoDB.find({userId: Meteor.userId()}).fetch()[0]
    if(typeof data == "undefined"){
      var errorReport = 'User ' + Meteor.userId() + ' failed to retrive data from UserInfoDB, on page ' + Router.current().path + ' on ' + new Date() + '.'
      Meteor.call('generateErrorReport', errorReport)
      this.redirect('/error/data')
    }
    console.log(data)
    this.render('userinfoedit')
  }
})

这种情况偶尔会起作用,但非常简单,通常会导致数据未定义。但是,一旦你回击/错误/数据,数据将加载正常。有什么东西我做错了吗?

1 个答案:

答案 0 :(得分:0)

  1. waitOn订阅,以确保在调用action之前数据已准备就绪,并且在此之前显示loadingTemplate
  2. 为了安全起见,永远不要将Meteor.userId()传递给客户端的订阅或方法。只需在服务器端使用this.userId(发布功能)或Meteor.userId()(方法)。