2013-05-14 17 views
10

Używam Restify with Nodejs i mam pytanie dotyczące poprawnego sposobu przywrócenia kontroli do następnego middleware w stosie. Mam nadzieję, że używam poprawnej frazy, gdy mówię "następne oprogramowanie pośrednie w stosie".Restify Middleware - prawidłowe wywoływanie następnego middleware w stosie

Zasadniczo mój kod wygląda następująco:

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

Teraz, co chcę wiedzieć, to powinna być kod return next(); lub powinno być tylko next(); przekazać kontrolę do następnego w stosie?

Sprawdziłem i obie działają - to znaczy, że obie części kodu pomyślnie przejdą kontrolę i zwrócą dane zgodnie z oczekiwaniami - chcę wiedzieć, czy istnieje różnica między tymi dwoma i czy muszę użyć jednego na drugim. .

Odpowiedz

17

Nie ma różnicy. Przyjrzałem się źródłu Restify i wydaje się, że nic nie robi z zwracaną wartością oprogramowania pośredniego.

Powodem korzystania return next() jest wyłącznie kwestią wygody:

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

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

To może pomóc uniknąć błędów takich jak to:

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

Cześć, możesz mi odpowiedzieć na 'Co robi następny zwrotnego w procedury obsługi http? server.get ('/', function (req, res, next) {res.end();}) 'Czy mam też zadzwonić dalej? –

+1

@vp_arth jeśli nie zakończysz żądania przez odesłanie odpowiedzi w ten czy inny sposób, możesz użyć 'next()', aby przekazać kontrolę do następnej procedury obsługi trasy/oprogramowania pośredniego/(błędu) – robertklep

Powiązane problemy