流星在数据库连接后运行一个函数
Meteor run a function after database connection
我需要从数据库中读取并聚合一些结果,然后在客户机上设置一些响应变量。我只能在数据库连接完成后执行此操作。
我试着在onRendered
中做,
Template.header.onRendered(function(){
recalculate();
});
它在本地工作,但部署到meteor.com
时不起作用。我应该在哪里进行函数调用?
onRendered
回调与在线数据无关,它只是告诉您模板何时出现在DOM上(除非您传统地等待数据开始呈现)。
它在本地工作,因为数据到达非常快,可以在模板渲染之前准备好(这需要几毫秒)。
然而,在实际情况下出现延迟:数据需要一段时间才能到达。由于您使用了一种不恰当的方式来了解数据是否准备就绪,因此会出现问题。如果您使用任何其他类型的任意触发器,它也会同样失败:
setTimeout(recalculate, 150);
要知道数据库何时已连接,请使用订阅的内置ready回调:
var dataSub = Meteor.subscribe('my data', recalculate); //Method 1
Tracker.autorun(function(computation) {
if(dataSub.ready()) {
computation.stop();
recalculate();
}
}); //Method 2
选择两种方法中的一种。
第二个模块更加模块化,因为您可以让多个计算同时监视一个订阅。
相关文章:
- 我可以在json对象中添加一个函数吗
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在另一个函数中使用变量this
- 在另一个函数成功结束后调用该函数
- mongoose.connect undefined不是一个函数
- 监听器必须是一个函数
- 使用JS函数来使用另一个函数的语法?node.js
- 如何取消object.prototypes javascript的一个函数
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 如何在javascript中使用不止一个函数
- jQuery-在页面加载时执行一个函数
- jquery UI draggable:UI.children不是一个函数
- jQuery Mobile Undefined不是一个函数
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- JS异常:animate不是一个函数
- 如何将一个函数附加到一个不存在的元素上
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟