Meteor-从客户端调用方法&;服务器方法

Meteor-从客户端调用方法&;服务器方法,meteor,meteor-methods,Meteor,Meteor Methods,如果从客户端和服务器共享的方法调用另一个仅在服务器上的方法,会发生什么?它会被呼叫两次吗?仅从服务器发送一次?只有一次来自客户 //lib/methods.js Meteor.methods({ test: function() { /*do some stuff that needs to update the UI quickly*/ Meteor.call('doSomeSecureStuff', Meteor.isClient); } }); //server/

如果从客户端和服务器共享的方法调用另一个仅在服务器上的方法,会发生什么?它会被呼叫两次吗?仅从服务器发送一次?只有一次来自客户

//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
中包装服务器部分的用例是当我需要加载仅在服务器上可用的代码时)

是的,仅在服务器上加载一次

您可以使用
this.isSimulation


当您运行一个共享方法时,它首先在客户端上运行模拟,然后在服务器上运行模拟——用其结果更新客户端(通常是相同的,这就是为什么它被称为乐观UI)。

方法仅在服务器端。它们不在客户端上运行。客户机调用服务器方法这不是真的:这些方法在客户机上运行,并进行模拟以提供更快的UI更新,当来自服务器的响应到来时,将比较结果,并根据服务器进行更新(如果需要)。只有当您在
/server/
if(Meteor.isServer){…}
中明确定义服务器的方法时,这才是正确的。是的,我想知道模拟的界限有多大(它能改变服务器响应无法修复的UI吗?这里:它能调用其他方法吗?它能调用外部脚本吗,如日志度量等?)服务器响应只更新minimongo(客户端中的mongo缓存)的状态。不确定对外部脚本的调用。我刚刚测试了:if you do
if(Meteor.isClient){$.get('https://test.com/“);}
在您的方法中,请求是发出的,因此不清楚为什么
Meteor.call
不是从客户端运行的(即使它是有意义的,因为该方法在两侧都运行,但您可能无法排除它对乘法的影响)