2016-03-31 3 views

答えて

0

あなたは正しいですが、ルータはクライアントとサーバの両方で動作します。ただし、サーバー側の実装は、サーバー側のルート(RESTエンドポイントなど)を対象としています。 Router.current()は定義されていないため、クライアントとサーバの間にIron:Router(メソッド内で呼び出された場合)との間に共有はありません。Router.current().route.getName()がこのエラーをスローします。

+0

これは正しいですが、達成しようとしていることには役立ちません。ありがとう –

0

はい、鉄:ルータは、サーバー側のルートを作成することができますが、そのAPIは、クライアントのみ

From the docs次のとおりです。

Router.route('/download/:file', function() { 
    // NodeJS request object 
    var request = this.request; 

    // NodeJS response object 
    var response = this.response; 

    this.response.end('file download content\n'); 
}, {where: 'server'}); 

あなたは何を見つけることができるはずですので、あなたはNodeJSリクエストオブジェクトへのアクセス権を持っていますあなたはそこに必要です、例えばthis.request.route,this.request.path

+0

私はあなたの答えを試し、あなたに戻ってきます。 –

+0

私はすぐにドキュメントを読んで自分自身に慣れ親しむ時間がありました。 this.requestをクライアント上に設定する必要があるため、これは私を助けません。クライアント上のデータセットは信頼できません。 this.requestがブラウザによって自動的に設定され、もう一方の側では変更できないものを持っていれば素晴らしいでしょう。とにかくありがとう。それは私が簡単な方法を見つけることができないことを吸う。 –

+0

鉄のルータが自動的にクライアントで使用できる値を設定でき、その値をクライアントや途中で調整できない場合は、いいでしょう。 –

0

メソッドを呼び出すと、Iron-Routerで定義されている「ルート」を経由していません。これはMeteorフレームワークによって定義されたルートです。クライアントがどのルートにいるかは気にしません。

したがって、クライアントがエンドポイントを呼び出しているページを知る必要がある場合は、それをメソッドのパラメータとして渡す必要があります。

Meteor.methods({ 
    "myEndPoint": function(route) { 
     // use route here. 
     return //something 
    } 
}) 
+0

いいえありがとう –

+0

でもありがとうとにかく –

+0

よく、私はあなたがどのルートにいるかを知る別の方法を知らない。メソッドは任意のroから呼び出すことができるとにかく、メソッドを使うのではなく、あなたが必要とするものを、あなたがターゲットとするルートに登録されているコレクションに入れてください。 – MrE

関連する問題