node.js - res - 미들웨어 예




ExpressJS/ConnectJS 미들웨어 내에서 "app"변수에 액세스 하시겠습니까? (2)

다음과 같이 Node 전역 객체에 변수를 첨부 할 수도 있습니다.

//some-module.js
global.someVariable = "some value!";

//another-module.js
console.log(global.someVariable); // => "some value!"

Nitzan Shaked의 답변 (req.app 사용)은 훨씬 더 나은 접근 방법입니다.

사실,이 솔루션을 전혀 사용하지 말라고 조언합니다. 그것이 완전하기 때문에 전적으로 그것을 떠날 것입니다, 그것은 효과가 있기 때문에,하지만 그것은 거의 모든 상황에서 나쁜 연습입니다 (polyfills 추가 제외).

이것은 내가 올바른 접근 방식이 아닐지 모르지만, expressJS / connectjS 미들웨어 호출 내부에서 app 변수에 조건 적으로 객체 / 매개 변수를 추가하려고합니다.

이 함수는 콜백이므로 미들웨어 호출 내부에서 app 에 액세스하는 표준 / 최선의 방법은 무엇입니까?

  //app.js
  var myMiddleware = require('./lib/mymiddleware.js');
  ...
  app.configure( function(){
    app.use( myMiddleware.func() );
    ...
  }

  if( 'object' !== typeof app.myObject ){
    cry( 'about it' );
  } 


  //mymiddleware.js
  module.exports.func = function( ){
    return function( req, res, next ){
       //append app object
       //app.myObject = {}
       next();
    }
  };

이것은 locals 또는 settings 이 나중에 렌더링 될 수있는 것이 아니라 나중에 실행 체인에서 라우트 및 소켓에 사용될 것임에 유의하십시오.


요청 개체에는 app 필드가 있습니다. req.app 를 사용하여 app 변수에 액세스하기 req.app 됩니다.





middleware