如果从客户端和服务器共享的方法中我将调用另一个仅在服务器上的方法,会发生什么?会被叫两次吗?只有一次来自服务器?只有一次来自客户?
//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
中的用例是当我需要加载仅在服务器上可用的代码时)
答案 0 :(得分:3)
是的,只有一次在服务器上。
您可以使用this.isSimulation
当您运行共享方法时,它首先在客户端上运行模拟,然后在服务器上运行 - 使用其结果更新客户端(通常是相同的 - 这就是为什么它被称为乐观UI)。