在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')
}
})
这种情况偶尔会起作用,但非常简单,通常会导致数据未定义。但是,一旦你回击/错误/数据,数据将加载正常。有什么东西我做错了吗?
答案 0 :(得分:0)
waitOn
订阅,以确保在调用action
之前数据已准备就绪,并且在此之前显示loadingTemplate
。Meteor.userId()
传递给客户端的订阅或方法。只需在服务器端使用this.userId
(发布功能)或Meteor.userId()
(方法)。