2016-04-14 107 views
0

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

客户:

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

    } 
}); 

回答

0

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

如果你想发送的所有可用的方法给客户的名单,自己筛选出的功能,例如:

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

真棒,这应该帮我写过多未来的方法。我想知道是否这是来自... method_handler的异步结果。我没有检查这个代码,现在它按预期工作,谢谢。 –

相关问题