【发布时间】:2016-03-10 09:30:31
【问题描述】:
如果我从客户端和服务器共享的方法中调用另一个仅在服务器上的方法,会发生什么情况?它会被调用两次吗?只有一次来自服务器?客户只有一次?
//lib/methods.js
Meteor.methods({
test: function() {
/*do some stuff that needs to update the UI quickly*/
Meteor.call('doSomeSecureStuff', Meteor.isClient);
}
});
//server/methods.js
import secureStuff from './secureStuff.js';
Meteor.methods({
doSomeSecureStuff: function(originIsClient) {
console.log(originIsClient);
secureStuff();
}
});
根据我的测试,它只从服务器调用一次,但由于我没有找到任何文档,因此我想确保 1)这是实际发生的情况,并且 2)将来会保持这种状态
(正如示例所建议的,当我需要加载仅在服务器上可用的代码时,我不能只将服务器部分包装在 Meteor.isServer 中)
【问题讨论】:
-
方法只在服务器端。它们不在客户端上运行。客户端调用服务端方法
-
这不是真的:方法在客户端运行以及模拟以提供更快的 UI 更新,当来自服务器的响应来时,比较结果,并根据服务器更新如果需要的话。 docs.meteor.com/#/full/meteor_methods
-
只有在
/server/或if (Meteor.isServer) { ... }中为服务器明确定义方法时才适用
标签: meteor meteor-methods