2012-04-12 3 views
7

私は最初の流星アプリを構築しており、oauthコールバックを処理するために新しいルートハンドラを作成できる必要があります。私はserver.jsを調べて、のmeteor_bootstrapの下でconnect.appコンテキストが利用可能であることを発見しました。これはうまくいかないようですが:__meteor_bootstrap__.appで別のルートハンドラをマウントできますか?

if (Meteor.is_server) { 
    Meteor.startup(function() { 
    var app = __meteor_bootstrap__.app; 
    app.use('/callback',function (req,res) { 
     res.writeHead(404); 
     res.end(); 
     return; 
    }); 
    }); 
} 

思考?

答えて

8

このソリューションの問題は、ミドルウェアがスタックの一番下に置かれていることです。したがって、キャッチオール・メテオ・ハンドラは、常に「/コールバック」ハンドラの前に実行されます。

(流星が彼らの適切なルーティングのサポートを解放するまで)これを回避するための1つの非常にハック方法は、スタックの最上位ATTあなたのハンドラ内でスプライスすることです:

__meteor_bootstrap__.app.stack.splice (0, 0, { 
    route: '/hello', 
    handle: function (req,res, next) { 
     res.writeHead(200, {'Content-Type': 'text/plain'}); 
     res.end("hello world"); 
     return; 
    }.future() 
}); 
+0

ありがとうございます、魅力的です。 –

+4

これは、次の変更後には必要ありません。https://github.com/meteor/meteor/commit/a2d5bfa6dbbecff94877142a57bb212aa7f2a590 – avital

+0

+1これに気付いても流星コードの変更については、+1してください。あなたはそれがどのように役立つかを明確にすることはできますか? –

2

答えの中には、現在ハッキングされていないサーバー上でのルーティングが行われていないものがあります。これは既知の問題で、ルーティングのように聞こえるのはToDoリストのホットなアイテムです。

6

あなたがスマートMeteor Routerでこれを達成することができますパッケージ:

Meteor.Router.add({ 
    '/callback': 404 
}) 
+0

これは現在、最良の答えです。 – wizonesolutions

関連する問題