访问collection.property时Meteor Autorun()未运行
有些奇怪的事情正在发生;当我运行以下代码时,它可以工作:访问collection.property时Meteor Autorun()未运行,meteor,Meteor,有些奇怪的事情正在发生;当我运行以下代码时,它可以工作: 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文档的深处发现了这一点:“如果自动运行的初始运行引发异常,计
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文档的深处发现了这一点:“如果自动运行的初始运行引发异常,计算将自动停止,并且不会重新运行。”
在第一次运行自动运行时,即加载页面时,数据库尚未加载,这会在您尝试访问room.room\u id
时引发异常,自动运行立即停止再次运行。修正加入:
if (room) {
console.log(room.room_id);
...
}
你说停止跑步是什么意思?。它是否会抛出任何错误或整个代码块停止运行?整个代码块不会得到评估-由于某种原因它不会自动运行。能否在函数开头添加一个
console.log
?可能在某个地方抛出了一些错误。我尝试在块的顶部放置另一个日志语句,但也没有运行。搞定了!在我的自动运行中,我已经在检查document.body、userId、firstRun,现在,感谢您的回答,最后是与我的集合查询@kenysong关联的var