【问题标题】:Meteor method returns different object on client and serverMeteor 方法在客户端和服务器上返回不同的对象
【发布时间】:2019-08-30 03:52:33
【问题描述】:

我有一个简单的方法,它应该将服务器上所有可用的方法返回给客户端,但返回的响应是一个空对象。

客户:

Meteor.call("servMethods", function(err, res) {
  if(err) {
    console.log(err);
  }
  if(res) {
    console.log(res);
    // logs only:
    // Object {}
  }
});

服务器:

Meteor.methods({
  "met1": function() {
  },
  "met2": function() {
  },
  "servMethods": function() {
    var methods = Meteor.default_server.method_handlers;
    console.log(methods);
    return methods;

    // logs correctly:
    // { met1: [Function: met1],
    //   met2: [Function: met2],
    //   servMethods: [Function: servMethods] }

  }
});

【问题讨论】:

    标签: javascript node.js meteor


    【解决方案1】:

    服务器端方法只能将 EJSON-able 值返回给客户端。函数不支持 EJSON,因此会从结果对象中过滤掉。

    如果要将所有可用方法名称的列表发送给客户端,请自行过滤掉函数,例如:

    "servMethods": function() {
      return _.keys(Meteor.default_server.method_handlers);
    },
    

    【讨论】:

    • 太棒了,这也应该有助于我编写未来的方法。我想知道这是否可能是 ...method_handler 的异步结果问题。我确实检查了这段代码,现在它可以按预期工作了,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-06-25
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2020-09-03
    • 1970-01-01
    相关资源
    最近更新 更多