Deps.autorun说服务器功能未定义

时间:2014-04-27 02:31:15

标签: meteor

我从来没有花时间/机会真正理解Deps.autorun的范围...所以在这里我再次遇到困扰我很多次的同样问题(以前,我总是找到一个解决方法,绕过问题)...无论如何,基本上,我在服务器端定义了一个函数:

serverFunc = function() {}

在客户端,我做

Deps.autorun(function() { var test = serverFunc(); }

我收到错误消息,说没有定义serverFunc。

有人可以帮助我理解为什么会这样吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

Deps.autorun()总是运行一次,然后每当跟踪的任何依赖项发生更改时重新运行该函数。这些依赖关系通常需要设置为Meteor反应数据源。在客户端上未定义然后在服务器上定义的简单函数不足以重新触发。

如果您希望从客户端调用仅在服务器上定义的功能,则必须做两件事:

  1. 在服务器上,将功能放在Meteor.methods
  2. 在客户端上,使用Meteor.call
  3. 否则,客户端上不存在仅在服务器上定义的函数,并且在客户端上调用它将在调用未定义函数时抛出错误。