필요하지 않은 경우 다음으로 사용하기에 좋지 않습니까?

압력

에서 express하고 connect, 내가 필요하지 않은 경우 미들웨어에서 "다음"을 사용하는 나쁜? 가능한 부정적인 결과가 있습니까? 이 미들웨어 이후에 호출 될 미들웨어가 없다고 가정 next하면에서 아무 것도 호출하지 않습니다. 다른 미들웨어에 대한 콜백을 추가하려는 next경우이 미들웨어에서 실수로 트리거 될 수 있으므로 모듈화에 좋지 않다는 것을 알고 있습니다 . 그러나이 경우 next미들웨어가 예상치 못한 방식으로 상호 작용하는 경우가 많기 때문에 어쨌든 모듈화에 좋지 않습니다.

unneeded의 예로 next, 원래 스택의 이름을 생각해 낸 사람들이 만든 샘플 MEAN.JS스택을 고려 하십시오 . next호출되지 않는 콜백이있는 것 같습니다 . 많은 사람들이에 컨트롤러 포함 기능 :userssignin

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미들웨어 에서 정의를 꺼내려고 시도했지만 경로가 여전히 작동하는 것 같습니다. 그러나 아마도 passportauthenticate()기능에 사용하고, 방치해도 문제는 없지만 경우에 따라서는 문제를 일으킬 수 있습니다.

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 미들웨어를 사용하지 않으면 부작용이 발생합니까?

케빈 B

미들웨어를 작성할 때 next매개 변수는 선택 사항입니다. 목적은 체인의 다음 미들웨어가 호출되도록하는 것입니다. 현재 미들웨어가 주어진 요청에 대해 마지막으로 호출되도록하려면 next매개 변수를 실행하지 않으면 됩니다. 이것은 당신이 직접 작성한 코드에 대해서는 괜찮지 만, 일반적으로 next그들이 추가 할 수있는 다른 것을 알지 못하기 때문에 다른 곳에서 사용될 수있는 미들웨어에서 항상 매개 변수를 실행하는 것이 좋습니다 .

예를 들어 요청이 완료된 후에 발생하는 일종의 로깅을 추가하고 싶을 수 있습니다. 로깅 미들웨어 이전에 실행되는 미들웨어가 실행되지 않으면 로깅되지 않습니다 next.

http://expressjs.com/api.html#middleware

실행 next하지 않으면 단순히 다음 미들웨어가 시작되지 않습니다. 다음 미들웨어로 이동하지 않아서 발생하는 것 외에 실행하지 않는 다른 부작용은 없습니다 (예를 들어 응답이 아직 종료되지 않은 경우 호출하지 않으면 next시간 초과가 발생 함).

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

필요하지 않은 경우 오버 플로우 스크롤바 숨기기

분류에서Dev

이 경우 Htmlspecialchars가 필요하지 않습니까?

분류에서Dev

RegisterForNavigation을 사용하는 경우 ViewModelLocator가 필요하지 않습니까?

분류에서Dev

내 경우에는 작곡가 이름 간격 "다음으로 사용"이 작동하지 않습니다.

분류에서Dev

그놈 터미널 창의 투명도를 변경하는 더 좋은 방법이 있습니까? 나는 마우스 사용을 좋아하지 않는다

분류에서Dev

executePendingBindings ()를 사용하는 경우 및 필요하지 않은 경우

분류에서Dev

힘내 풀에는 병합이 필요하지만 로컬 변경은 필요하지 않습니다.

분류에서Dev

기능을 사용하지 않는 경우 appcompat가 필요합니까?

분류에서Dev

CSS에서 필요하지 않은 경우 줄 바꿈 방지

분류에서Dev

냉각 팬은 분명히 필요한 경우에도 고속에 도달하지 않습니다.

분류에서Dev

PL / SQL을 배우는 경우 MySQL이 필요하지 않습니까?

분류에서Dev

Laravel 5.1 필드가 하나에 필요하지만 다른 메서드에는 필요하지 않은 경우 두 메서드에 대해 동일한 양식 요청 규칙을 사용하는 방법은 무엇입니까?

분류에서Dev

필요하지 않은 경우에도 중괄호를 사용하지 않는 객관적인 이유가 있습니까?

분류에서Dev

C # [Required ()] 주석이 필요한 경우 예외를 throw하지 않습니다.

분류에서Dev

필요하지 않은 경우 conda-forge 패키지 사용을 피하는 방법은 무엇입니까?

분류에서Dev

환경에 정의되어 있지 않은 경우 사용할 좋은 기본 PATH는 무엇입니까?

분류에서Dev

NppExec은 Notepad ++에서 경로 기능을 사용하지 않습니다.

분류에서Dev

Traefik은 경로를 라우팅하지 않습니다.

분류에서Dev

getdeb는 필요하지 않은 응용 프로그램을 변경합니까?

분류에서Dev

더 많은 숫자가 필요하지 않은 경우 셀을 세 자리 10 진수로 포맷 하시겠습니까?

분류에서Dev

'만약'이 필요하지 않은 경우는 언제입니까?

분류에서Dev

CodeIgniter는 경로에 있지 않은 경우 URL을 허용하지 않습니다.

분류에서Dev

필요한 경우에도 MVC4 유효성 검사가 작동하지 않습니다.

분류에서Dev

필요하지 않은 경우 QSortFilterProxyModel 정렬

분류에서Dev

필요하지 않은 경우 QSortFilterProxyModel 정렬

분류에서Dev

조각에서 setReatinInstance (true)를 사용하지 않는 좋은 경우는 무엇입니까?

분류에서Dev

필수 필드 검사기는 필드가 유효하지 않은 경우에도 onclick 기능을 허용합니다.

분류에서Dev

nsurlconnection은 다음과 같은 경우 오류를 반환하지 않습니다.

분류에서Dev

더 이상 백업이 필요하지 않은 경우 Deja-dup 파일을 삭제할 수 있습니까?

Related 관련 기사

  1. 1

    필요하지 않은 경우 오버 플로우 스크롤바 숨기기

  2. 2

    이 경우 Htmlspecialchars가 필요하지 않습니까?

  3. 3

    RegisterForNavigation을 사용하는 경우 ViewModelLocator가 필요하지 않습니까?

  4. 4

    내 경우에는 작곡가 이름 간격 "다음으로 사용"이 작동하지 않습니다.

  5. 5

    그놈 터미널 창의 투명도를 변경하는 더 좋은 방법이 있습니까? 나는 마우스 사용을 좋아하지 않는다

  6. 6

    executePendingBindings ()를 사용하는 경우 및 필요하지 않은 경우

  7. 7

    힘내 풀에는 병합이 필요하지만 로컬 변경은 필요하지 않습니다.

  8. 8

    기능을 사용하지 않는 경우 appcompat가 필요합니까?

  9. 9

    CSS에서 필요하지 않은 경우 줄 바꿈 방지

  10. 10

    냉각 팬은 분명히 필요한 경우에도 고속에 도달하지 않습니다.

  11. 11

    PL / SQL을 배우는 경우 MySQL이 필요하지 않습니까?

  12. 12

    Laravel 5.1 필드가 하나에 필요하지만 다른 메서드에는 필요하지 않은 경우 두 메서드에 대해 동일한 양식 요청 규칙을 사용하는 방법은 무엇입니까?

  13. 13

    필요하지 않은 경우에도 중괄호를 사용하지 않는 객관적인 이유가 있습니까?

  14. 14

    C # [Required ()] 주석이 필요한 경우 예외를 throw하지 않습니다.

  15. 15

    필요하지 않은 경우 conda-forge 패키지 사용을 피하는 방법은 무엇입니까?

  16. 16

    환경에 정의되어 있지 않은 경우 사용할 좋은 기본 PATH는 무엇입니까?

  17. 17

    NppExec은 Notepad ++에서 경로 기능을 사용하지 않습니다.

  18. 18

    Traefik은 경로를 라우팅하지 않습니다.

  19. 19

    getdeb는 필요하지 않은 응용 프로그램을 변경합니까?

  20. 20

    더 많은 숫자가 필요하지 않은 경우 셀을 세 자리 10 진수로 포맷 하시겠습니까?

  21. 21

    '만약'이 필요하지 않은 경우는 언제입니까?

  22. 22

    CodeIgniter는 경로에 있지 않은 경우 URL을 허용하지 않습니다.

  23. 23

    필요한 경우에도 MVC4 유효성 검사가 작동하지 않습니다.

  24. 24

    필요하지 않은 경우 QSortFilterProxyModel 정렬

  25. 25

    필요하지 않은 경우 QSortFilterProxyModel 정렬

  26. 26

    조각에서 setReatinInstance (true)를 사용하지 않는 좋은 경우는 무엇입니까?

  27. 27

    필수 필드 검사기는 필드가 유효하지 않은 경우에도 onclick 기능을 허용합니다.

  28. 28

    nsurlconnection은 다음과 같은 경우 오류를 반환하지 않습니다.

  29. 29

    더 이상 백업이 필요하지 않은 경우 Deja-dup 파일을 삭제할 수 있습니까?

뜨겁다태그

보관