Programing

express.js에서 'next / next ()'를 이해하는 데 어려움을 겪습니다.

lottogame 2020. 11. 25. 07:26
반응형

express.js에서 'next / next ()'를 이해하는 데 어려움을 겪습니다.


다음은 그 예입니다.

// Configuration
app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

(기타.)

app.get('/memo', function(req, res) {
  console.log("index");
  Memo.find({}, function(err, data) {
    if(err) return next(err);
    res.render('index', { memos: data });
  });
});

그리고 여기 또 하나가 있습니다 :

app.get('/memo/list', function(req, res, next) {
  console.log("get memos");
  Memo.find({}, function(err, data) {
    if(err) return next(err);
    res.json(data);
  });
});

A로부터 촬영 노드 기반으로 간단한 메모 패드

저를 당혹스럽게하는 질문은 다음과 같습니다.

  1. 정확히 무엇을 next/next();합니까? 존재하지 않으면 어떻게됩니까?
  2. 두 번째 부분 next이 매개 변수로 사용되고 번째 부분 은 그렇지 않은 이유는 무엇 입니까?

편집하다:


Express는 콜백 (작업이 완료 될 때 호출되는 함수)이있는 미들웨어 함수를 사용하고 다음에는 해당 목적을 가지고 있습니다 (익스프레스 스택에서 다음 미들웨어를 트리거하는 콜백입니다). 모든 Express 미들웨어 (Connect 호환 가능)에는 요청, 응답, 다음 (선택 사항)의 3 개의 매개 변수가 있습니다.

예를 들어 정적 미들웨어는 정적 파일을 제공하고, csrf 미들웨어는 POST 요청을 수신 할 때 매개 변수를 확인하고 경로를 처리하는 라우터 미들웨어를 확인합니다 (위에 붙여 넣은 내용이 그 일부입니다).

각 미들웨어는 작업을 완료하고 next일부 조건이 충족되면 대기열 에서 미들웨어를 호출 할 수 있습니다 (예를 들어 정적 미들웨어는 파일을 제공하기 위해 자체적으로 처리하므로 라우터가 처리 할 수 ​​있도록 다음 미들웨어를 호출하지 않습니다.) 전화를 받음).

라우터에서는 next실행되는 마지막 미들웨어가되는 경향이 있기 때문에 일반적으로 호출하지 않습니다 (벤치마킹과 같은 것을 원하지 않는 한).

로그인하지 않은 모든 사용자에 대한 액세스를 거부하는 미들웨어를 생성 next()하려면 사용자가 로그인 한 경우에만 호출 해야합니다 (다음 미들웨어가 호출되고이 경우 라우터가 사용자가 찾고있는 페이지에 액세스) 그렇지 않으면 로그인 페이지로 리디렉션 할 수 있습니다.

next 매개 변수가 전혀 없거나 오류를 매개 변수로 사용합니다.

편집 : 구성에 따라 라우터가 정적 미들웨어 앞에 있으므로 파일을 제공하려면 경로가 일치하지 않을 때 next ()를 호출하는 와일드 카드 경로를 선언해야합니다.

app.get('*', function (req, res, next) {
  // no route is matched
  // so call next() to pass to the static middleware
  next();
});

참고 : 라우터 뒤에 정적 파일 서버를 배치하는 것은 권장하지 않습니다. 사용자 지정 404 경로를 정의 할 수 있도록 전에 배치하는 것이 좋습니다.

참고URL : https://stackoverflow.com/questions/8710669/having-a-hard-time-trying-to-understand-next-next-in-express-js

반응형