2012-04-12 12 views
7

İlk meteor uygulamamı yapıyorum ve bir oauth geri çağrıcısını işlemek için yeni bir rota işleyicisi oluşturabilmek gerekiyor. Server.js'yi inceledim ve connect.app içeriğinin meteor_bootstrap altında bulunduğunu keşfettim. Her ne kadar bu işe yaramazsa da:__meteor_bootstrap__.app üzerinden başka bir rota işleyicisini yerleştirebilir miyim?

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

Düşünceler?

cevap

8

Bu çözümdeki sorun, ara katmanınızın yığının altına yerleştirilmesidir. Bu nedenle, tüm meteor işleyicileri her zaman "/ callback" -handler'ınızdan önce çalışır.

__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

Teşekkürler, bir çekicilik gibi çalışır. –

+4

Aşağıdaki değişiklikten sonra bu gerekli olmamalıdır: https://github.com/meteor/meteor/commit/a2d5bfa6dbbecff94877142a57bb212aa7f2a590 – avital

+0

+1, bunu ve ayrıca Meteor kodu değişimini farketmenizi sağlar. Bunun nasıl yardımcı olacağını açıklayabilir misin? –

2

Bazı yanıtlar şu anda sunucuda haksızlık olmaksızın yönlendirme olmaya yönlendiriliyor. Bu bilinen bir sorundur ve yönlendirme, yapılacaklar listesindeki sıcak bir öğedir.

6

Sen Meteor Router akıllı ile bunu başarabilirsiniz: (göktaşı bunların düzgün yönlendirme desteği bırakana kadar) Bunu aşmanın

Bir çok hacky yolu yığının en üstüne att işleyicinizde kesikler etmektir Paket:

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

Bu, şu anda en iyi cevaptır. – wizonesolutions