我需要从数据库中读取并聚合一些结果,然后在客户端上设置一些反应变量。我只能在连接数据库后才能这样做。
我尝试在right_only
,
diff_files
它在本地工作,但在部署到onRendered
时则不行。我应该在哪里进行函数调用?
答案 0 :(得分:1)
onRendered
回调与网络上的数据无关,只是告诉你模板何时出现在DOM上(除非你等待数据开始渲染)。
它在本地工作,因为数据到达速度非常快,可以在模板渲染之前准备好(需要几毫秒)。
但是在实际条件下会出现延迟:数据需要一段时间才能到达
由于您使用不恰当的方式来了解数据的准备情况,因此出现问题。如果您使用过任何其他类型的任意触发器,那么它的失败就会非常糟糕:
setTimeout(recalculate, 150);
要知道数据库何时连接,请使用subscription's built-in ready callbacks:
var dataSub = Meteor.subscribe('my data', recalculate); //Method 1
Tracker.autorun(function(computation) {
if(dataSub.ready()) {
computation.stop();
recalculate();
}
}); //Method 2
选择两种方法中的一种。
第二个更模块化,因为您可以有多个计算观看一个订阅。