에서 express
하고 connect
, 내가 필요하지 않은 경우 미들웨어에서 "다음"을 사용하는 나쁜? 가능한 부정적인 결과가 있습니까? 이 미들웨어 이후에 호출 될 미들웨어가 없다고 가정 next
하면에서 아무 것도 호출하지 않습니다. 다른 미들웨어에 대한 콜백을 추가하려는 next
경우이 미들웨어에서 실수로 트리거 될 수 있으므로 모듈화에 좋지 않다는 것을 알고 있습니다 . 그러나이 경우 next
미들웨어가 예상치 못한 방식으로 상호 작용하는 경우가 많기 때문에 어쨌든 모듈화에 좋지 않습니다.
unneeded의 예로 next
, 원래 스택의 이름을 생각해 낸 사람들이 만든 샘플 MEAN.JS
스택을 고려 하십시오 . next
호출되지 않는 콜백이있는 것 같습니다 . 많은 사람들이에 컨트롤러 포함 기능 :users
signin
exports.signin = function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err || !user) {
res.status(400).send(info);
} else {
// Remove sensitive data before login
user.password = undefined;
user.salt = undefined;
req.login(user, function(err) {
if (err) {
res.status(400).send(err);
} else {
res.json(user);
}
});
}
})(req, res, next);
};
이 함수에는 next
콜백이 정의되어 있습니다. 이 next
콜백은 passport.authenticate()
사용자 지정 미들웨어 함수에서 매개 변수로 사용됩니다. 그러나이 매개 변수는 함수 자체에서 사용되지 않습니다. next
함수 정의와 사용자 정의 passport
미들웨어 에서 정의를 꺼내려고 시도했지만 경로가 여전히 작동하는 것 같습니다. 그러나 아마도 passport
그 authenticate()
기능에 사용하고, 방치해도 문제는 없지만 경우에 따라서는 문제를 일으킬 수 있습니다.
I was recently looking at passport
's tutorials on http://passportjs.org, and I came across a function in the section on custom callbacks on the authenticate
page that looks almost exactly like the signin
function in MEAN.JS
. One difference was that it actually had some next
callbacks (for error handling), so the next
parameter was actually useful. Is it possible that the MEAN.JS
app took a lot of code from passportjs.org
's guide and changed it over time, but left in some vestigial remnants that do not do anything but were causing no harm? Or does the next
parameter actually do something in passport.authenticate()
that is not immediately obvious? Regardless of why this happened, does an extra next
parameter in connect
미들웨어를 사용하지 않으면 부작용이 발생합니까?
미들웨어를 작성할 때 next
매개 변수는 선택 사항입니다. 목적은 체인의 다음 미들웨어가 호출되도록하는 것입니다. 현재 미들웨어가 주어진 요청에 대해 마지막으로 호출되도록하려면 next
매개 변수를 실행하지 않으면 됩니다. 이것은 당신이 직접 작성한 코드에 대해서는 괜찮지 만, 일반적으로 next
그들이 추가 할 수있는 다른 것을 알지 못하기 때문에 다른 곳에서 사용될 수있는 미들웨어에서 항상 매개 변수를 실행하는 것이 좋습니다 .
예를 들어 요청이 완료된 후에 발생하는 일종의 로깅을 추가하고 싶을 수 있습니다. 로깅 미들웨어 이전에 실행되는 미들웨어가 실행되지 않으면 로깅되지 않습니다 next
.
http://expressjs.com/api.html#middleware
실행 next
하지 않으면 단순히 다음 미들웨어가 시작되지 않습니다. 다음 미들웨어로 이동하지 않아서 발생하는 것 외에 실행하지 않는 다른 부작용은 없습니다 (예를 들어 응답이 아직 종료되지 않은 경우 호출하지 않으면 next
시간 초과가 발생 함).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다