简体   繁体   English

流星方法在客户端和服务器上返回不同的对象

[英]Meteor method returns different object on client and server

I have a simple method, which should return all available methods on server back to client, but returned response is an empty object. 我有一个简单的方法,该方法应该将服务器上的所有可用方法返回给客户端,但是返回的响应是一个空对象。

Client: 客户:

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

Server: 服务器:

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] }

  }
});

Server–side methods can only return EJSON–able values to the client. 服务器端方法只能将可支持EJSON的值返回给客户端。 Functions are not EJSON-able, and therefore they're filtered out from the result object. 函数不支持EJSON,因此将其从结果对象中过滤掉。

If you want to send the list of all available method names to the client, filter out the functions yourself, for example: 如果要将所有可用方法名称的列表发送给客户端,请自己过滤掉函数,例如:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM