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

时间:2016-04-14 21:54:41

标签: javascript node.js meteor

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

客户端:

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

  }
});

1 个答案:

答案 0 :(得分:0)

服务器端方法只能将具有EJSON功能的值返回给客户端。函数不具有EJSON功能,因此它们会从结果对象中过滤掉。

如果要将所有可用方法名称的列表发送到客户端,请自行过滤掉这些功能,例如:

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