1

发生了一些奇怪的事情;当我运行以下代码时,它可以工作:

Deps.autorun(function() {
  var room = Rooms.findOne({'room_id':Session.get('room_id')});
  // var p = room.room_id;
  console.log('autorun');
}

但是,如果我取消注释该var p行,它(整个块)将停止运行。发生了什么?

4

1 回答 1

2

在 Meteor.js 文档的深处发现了这一点:“如果自动运行的初始运行引发异常,则计算将自动停止并且不会重新运行。”

首次运行自动运行时,即页面加载时,数据库尚未加载,尝试访问时抛出异常room.room_id,自动运行立即停止再次运行。通过添加修复:

if (room) {
  console.log(room.room_id);
  ...
}
于 2013-07-22T03:47:29.893 回答