未被捕获的meteor中的types错误

我有这个代码:

Meteor.subscribe('practices'); Session.set('practice', 'Practice 1'); Template.laps_t.laps = function () { var obj = Practices.findOne({name: Session.get('practice')}); return obj.lap_n; }; 

我得到一个错误: Uncaught TypeError: Cannot read property 'lap_n' of undefined

我知道lap_n实际上是obj一个属性。

我没有使用自动订阅。 有任何想法吗?

编辑:

解决了。 多谢你们。

如果(obj){return obj.lap_n}就像你说的那样做了。

您应该始终检查模板内是否存在对象。 这样做的方式是模板将立即在页面加载时执行,甚至可能在订阅从服务器检索到mongo数据之前,所以在这种情况下,您的obj将是未定义的,并且不会有您期望的属性。 但是,由于模板是被动的,一旦数据可用,您的Practices.findOne调用将被重新评估,并重新执行模板。 然后它会工作。

你可能要等到数据到达,所以可能是你可以尝试添加

 if obj return obj.lap_n else return { lap_n: 0 }