2

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

//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(正如示例所建议的,当我需要加载仅在服务器上可用的代码时,我不能只包装服务器部分的用例)

4

1 回答 1

3

是的,只有一次在服务器上。

您可以使用以下方法包装共享方法的服务器部分this.isSimulation

当您运行共享方法时,它首先在客户端上运行模拟,然后在服务器上运行 - 使用其结果更新客户端(通常是相同的 - 这就是它被称为 Optimistic UI 的原因)。

于 2016-03-10T01:30:31.287 回答