2017-09-13 3 views
0

app.route ('/ clientes')
.get (verificaAutenticacao, controller.listaClientes, controller.listaRegionais);다른 요청을 차단하는 요청 받기

내가 이것을 할 때 컨트롤러 하나만 잘못되었습니다?

+2

당신이하려는 일에 대해 더 많은 컨텍스트를 제공 할 수 있습니까? –

+0

글쎄, NodeJS, ExpressJS, MongoDB 및 Angular를 사용하고 있습니다. –

+0

그리고 두 개의 미들웨어를받는 경로를 하나 만들려고하는데, 내가 그들을 부를 때는 단지 하나만 호출됩니다. –

답변

0

저는 익스프레스, 앵귤러 및 몽고에서 새롭게 생겼습니다. 그래서 어떤 논리를 찾고 나서 대답을 찾았습니다.

나는 route.get을 만들고 미들웨어를 전달할 때 해당 기능 미들웨어를 참조하는 새 경로를 만들어야합니다.

0

당신은 무엇에 대해 얘기하는 것은 표현 nodejs 그리고 당신은 다음과 같은 구문을 사용한다 경로에 여러 미들웨어를 추가하려는 경우 : ... 나는이 문제를 해결

app.get('/example/b', function (req, res, next) { 
    console.log('the response will be sent by the next function ...') 
    next() 
}, function (req, res) { 
    res.send('Hello from B!') 
}) 
+0

나는이 일을 시도했지만, 오류가 발생했을 때 : UnhandledPromiseRejectionWarning : 처리되지 않은 약속 거부 id : 1) : 오류 : 헤더를 보낸 후 설정할 수 없습니다. –

+0

controller.listaClientes = function (req, res, next) { var filtro = {}; Cliente.find (filtro) .exec() 그 때는 ( 함수 (listagem) { res.json (listagem) } 함수 (에로) { CONSOLE.LOG (에로) 입술 .status (500) .json (erro); } ); 다음() }}; –

+0

그래서 두 번째 콜백 대신 첫 번째 .catch를 수행하는 대신 .then (function() {...}). catch (function() {..}) 두 번째로 res 만 할 수 있습니다. json 한 번만. 그렇게하면 해상도가 확정 된 것으로 표시되고 헤더를 다시 설정할 수 없습니다. 왜 당신은 너무 많은 미들웨어를 가지고 있지만 당신은 응답을 한 번만 끝내고 있는지 확인하지 않습니다. 자세한 내용은 https://stackoverflow.com/questions/7042340/error-cant-set-headers-after-the-are-sent-to-the-client –