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的異步結果。我沒有檢查這個代碼,現在它按預期工作,謝謝。 –

相關問題