Template.autorun()期间未加载Meteor模板数据

Template.autorun()期间未加载Meteor模板数据,meteor,kendo-ui,Meteor,Kendo Ui,我试图在我的数据库中以反应式方式填充我的剑道数据源 this.autorun(function(){ datasource.data(Organizations.findOne(thisOrg.data._id)); }); 每次初始渲染视图时都会正确激发,但在后续模板视图(非初始渲染)中,我在控制台中收到此错误,显示由于某些原因,template.data未加载: TypeError: Cannot read property '_id' of null at null.<an

我试图在我的数据库中以反应式方式填充我的剑道数据源

this.autorun(function(){
    datasource.data(Organizations.findOne(thisOrg.data._id));
});
每次初始渲染视图时都会正确激发,但在后续模板视图(非初始渲染)中,我在控制台中收到此错误,显示由于某些原因,
template.data
未加载:

TypeError: Cannot read property '_id' of null
at null.<anonymous> (org.js?0330655fbd63766e034cecb907e93089ccc3ef11:129)
at view.js:191
at Function.Template._withTemplateInstanceFunc (template.js:437)
at view.js:190
at Object.Blaze._withCurrentView (view.js:523)
at viewAutorun (view.js:189)
at Tracker.Computation._compute (tracker.js:294)
at new Tracker.Computation (tracker.js:210)
at Object.Tracker.autorun (tracker.js:533)
at Blaze.View.autorun (view.js:201)
TypeError:无法读取null的属性'\u id'
在空。(org.js?0330655fbd63766e034cecb907e93089ccc3ef11:129)
at view.js:191
在Function.Template.\u中使用TemplateInstanceFunc(Template.js:437)
at view.js:190
在Object.Blaze.\u和CurrentView(view.js:523)
在viewAutorun(view.js:189)
在Tracker.compute.\u compute(Tracker.js:294)
在newtracker.Computation(Tracker.js:210)上
在Object.Tracker.autorun(Tracker.js:533)
在Blaze.View.autorun(View.js:201)

有什么想法吗?我的头都撞到这里了。感谢您的输入。

这可能意味着您有一个竞争条件,即在自动运行触发后添加新数据。尝试先检查是否已插入:

this.autorun(function(){
  if (newDataId === thisOrg.data._id) {
    datasource.data(Organizations.findOne(thisOrg.data._id));
 }
});
其中
newDataId
是您的目标
id
。然后,您需要事先将
id
存储在执行插入或方法调用的
newDataId


快速侧注:我建议将其存储在
pageSession
变量(反应性var或反应性dict)中,而不是存储在
会话
var中(以避免过度拥挤会话)。

你说得对,这是一个计时问题。。。在发布这篇文章后,我意识到iron router中有一个
.ready()
选项,它实际上应该解决我的计时问题。请注意,
.ready()
只会在第一次加载页面时执行。我建议只在第一次渲染时使用此解决方案(我也这样做),并使用我的方法处理模板刷新。