2016-10-06 10 views
0

私はその中に石けん関数を呼び出すMeteorメソッドを持っています。SOAP関数から流星法に値を返す方法は?

Meteorはsoap clientからの応答を得る前にすべてのステートメントを実行しています。

結果が未定義です。

メソッドで他のステートメントを実行する前にsoapの実行を約束します。

createSoapConnection(){ 
    var Soap = require('soap'); 
    var url = 'https://xxxxxx/index.php/api/v2_soap/?wsdl'; 
    var args = {username: 'xxxxxx', apiKey: 'xxxxxx'}; 
     let client = Soap.createClient(url, function(err, client){ 
     let result = client.login(args, function(err, result) { 
     let sessionId = result.loginReturn.$value; 
     console.log(sessionId); 
      return { 
       conn: client, 
       sessionId: sessionId 
       }; 
      }); 
     }); 
} 

私はこの流星法でこのメソッドを呼び出しています。

addsoapmessage(){ 
     let a = Meteor.call("createSoapConnection"); 
     console.log(a); 
} 

結果として、コンソールが未定義になっています。その後、セッションIDが印刷されます。どのように私はこれを解決するのですか?

答えて

0
meteor add zardak:soap 

を呼び出す。そして、それらの以下のコードにしてみてください。

var url = 'http://example.com/wsdl?wsdl'; 
var args = {name: 'value'}; 

try { 
    var client = Soap.createClient(url); 
    var result = client.MyFunction(args); 

return result; // or send this result to the function where ever you want. 
} 
catch (err) { 
    if(err.error === 'soap-creation') { 
    console.log('SOAP Client creation failed'); 
    } 
    else if (err.error === 'soap-method') { 
    console.log('SOAP Method call failed'); 
    } 

} 

これらの関数を使用して任意のSOAP API呼び出しを行うことができます。詳細については、https://atmospherejs.com/zardak/soap

0

メテオールメソッドは何も返しません。あなたはコールバックを要求することができます。コールバックは終了時に起動しますが、コールバックは戻り値を返さず、見つかった場合はエラーのみを返します。

これを処理する最良の方法は、コレクションに結果を保存し、サブスクリプションに依存してクライアントがそれを反応的に見られるようにすることです。他のサーバーのメソッドが値にアクセスしたい場合がありますよう

また、あなたは、サーバーコードによってのみアクセス可能なサーバ変数、で返されたデータを格納することができます(それがうまくいくかもしれない。

0

をコールバック関数を実装あなたの流星でアプリケーションフォルダのルートにこのパッケージをインストールし

let a = Meteor.call("createSoapConnection", function (error, result) { 
       // display the error to the user and abort 
       if (error) 
        console.error(error.reason); 

       else { 
        console.log(result); 
       } 
      }); 
関連する問題