Meteor中未捕获的TypeError

时间:2013-01-07 12:18:32

标签: javascript node.js mongodb undefined meteor

我有这段代码:

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的属性。

我没有使用自动订阅。有什么想法吗?

修改

解决。谢谢你们。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您可能需要等到数据到达,因此您可以尝试添加

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