2013-05-14 3 views
10

Sto usando Restify con Nodejs e ho una domanda sul modo corretto di restituire il controllo al prossimo middleware in stack. Spero di usare la frase corretta quando dico "prossimo middleware in stack".Restify Middleware - chiama correttamente il prossimo middleware nello stack

In sostanza, il mio codice è simile al seguente:

//server is the server created using Restify 
server.use(function (req, res, next) { 
    //if some checks are a success 
    return next(); 
}); 

Ora, quello che voglio sapere è se il codice di essere return next(); o dovrebbe essere solo next(); per passare il controllo al successivo in pila?

Ho controllato ed entrambi funzionano - cioè entrambe le parti di codice passeranno con successo il controllo e restituiranno i dati come previsto - ciò che desidero sapere è se c'è una differenza tra i due e se ho bisogno di usarne uno su un altro .

risposta

17

Non c'è differenza. Ho dato un'occhiata al sorgente Restify e non sembra che faccia nulla con il valore di ritorno di un middleware.

La ragione per usare return next() è puramente una questione di convenienza:

// using this... 
if (someCondition) { 
    return next(); 
} 
res.send(...); 

// instead of... 
if (someCondition) { 
    next(); 
} else { 
    res.send(...); 
}; 

Potrebbe aiutare a prevenire errori come questo:

if (someCondition) 
    next(); 
res.send(...); // !!! oops! we already called the next middleware *and* we're 
       //  sending a response ourselves! 
+1

Ciao, mi puoi rispondere a 'Che cosa fare il prossimo richiamata nei gestori HTTP? server.get ('/', function (req, res, next) {res.end();}) 'Dovrei chiamare anche next? –

+1

@vp_arth se non si termina la richiesta inviando una risposta in un modo o nell'altro, è possibile usare 'next()' per passare il controllo al prossimo route/middleware/(error-) handler – robertklep