Meteor在数据库连接后运行一个函数

时间:2015-09-06 18:30:21

标签: javascript meteor

我需要从数据库中读取并聚合一些结果,然后在客户端上设置一些反应变量。我只能在连接数据库后才能这样做。

我尝试在right_only

中执行此操作
diff_files

它在本地工作,但在部署到onRendered时则不行。我应该在哪里进行函数调用?

1 个答案:

答案 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

选择两种方法中的一种。
第二个更模块化,因为您可以有多个计算观看一个订阅。