2012-04-12 2 views
7

Sto costruendo la mia prima app meteorica e devo essere in grado di creare un nuovo gestore di route per gestire un callback oauth. Ho controllato server.js e ho trovato che il contesto connect.app è disponibile sotto meteor_bootstrap. Anche se questo non sembra funzionare:Posso montare un altro gestore di route tramite __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; 
    }); 
    }); 
} 

Pensieri?

risposta

8

Il problema con questa soluzione è che il middleware è messo in fondo allo stack. Pertanto, il gestore di tutte le mete verrà sempre eseguito prima del tuo "/ callback" -handler.

Un modo molto hacky per aggirare il problema (fino a quando la meteora rilascia il loro sostegno di routing corretta) è quello di unire nel gestore att cima alla pila:

__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

Grazie, funziona come un fascino. –

+4

Questo non dovrebbe essere necessario dopo la seguente modifica: https://github.com/meteor/meteor/commit/a2d5bfa6dbbecff94877142a57bb212aa7f2a590 – avital

+0

+1 per notare questo e anche per il cambiamento del codice Meteor. Puoi chiarire come ti aiuti, però? –

2

Alcune delle risposte stanno portando al routing di essere un no-go sul server in questo momento senza essere hacky. È un problema noto e sembra che il routing sia un elemento caldo nell'elenco delle cose da fare.

6

È possibile raggiungere questo obiettivo con la Meteor Router intelligente pacchetto:

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

Questa è attualmente la migliore risposta. – wizonesolutions