2016-04-14 6 views
0

私は単純なメソッドを持っています。これはサーバー上の利用可能なメソッドをすべてクライアントに返しますが、返されるレスポンスは空のオブジェクトです。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] } 

    } 
}); 

答えて

0

サーバー側のメソッドは、クライアントにEJSON可能な値を返すことができます。関数はEJSONに対応していないため、結果オブジェクトから除外されます。あなたは、たとえば、機能を自分でフィルタリング、利用可能なすべての方法をクライアントにのリストを送信したい場合は

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

恐ろしい、これはあまりにも将来の方法を書いて私を助けなければなりません。私は多分それが非同期の結果であるかどうか疑問に思っていた... method_handler。私はこのコードをチェックして、期待通りに動作しました。ありがとうございました。 –

関連する問題