访问collection.property时Meteor Autorun()未运行



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

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

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

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

在第一次运行autorun时,即加载页面时,数据库尚未加载,当您尝试访问room.room_id时会引发异常,并且autorun立即停止再次运行。通过添加修复:

if (room) {
  console.log(room.room_id);
  ...
}

最新更新