2017-01-02 1 views
0

내 노드 애플리케이션과 함께 jSON 웹 토큰 (simple-jwt)을 사용합니다. 토큰 isValid (?)를 검사하고 참이면 사용자 데이터를 반환하는 미들웨어 (express.js 사용)가 있습니다.node.js의 실제 응답에 추가되는 json 객체를 어떻게 만듭니 까?

그러나 사용자가 localhost : 8080/home 또는 다른 경로에 GET 요청을 할 때 사용자 데이터 (tokenValidation 미들웨어에서)와 localhost : 8080/home의 실제 내용을 반환해야합니다. 두 응답으로 간주되므로 response.json ({})을 두 번 사용할 수 없습니다.

실제 json 응답과 함께 사용자 데이터를 추가하는 표준 방법은 무엇입니까?

코드가 필요한 경우 알려 주시기 바랍니다.

+0

'하면'/ home'' 당신이 그것을 사용자 데이터를 삽입 할 HTML을 반환해야합니다. – MatthieuLemoine

+0

HTML이 반환되지 않습니다. 나는 모바일 앱을 위해 API를하고있다. 따라서 필요한 것은 json을 반환하는 것입니다. – TradeRaider

답변

1

미들웨어에서 req 개체에 새 속성을 추가 할 수 있습니다.

(req, res, next) => { 
    const user = ...queryUser 
    req.user = user; 
    next(); 
} 

그리고 경로 처리기에서

:

(req, res) => { 
    const user = req.user; 
    const otherData = { data : 'junk' }; 
    res.status(200).send({ user, otherData }); 
} 
+0

예. 이 작동합니다. 나는 각 경로의 표현식에서 명시 적으로 호출하지 않고 user_data를 자동으로 추가하는 다른 방법이있을 것이라고 생각했습니다. – TradeRaider

+0

노드에 대한 이해가 슬림하지만 res.write()에 대해 방금 찾은 것 같습니다. 즉 res.send()는 응답을 끝내고 res.write()는 응답을 종료합니다. – TradeRaider

+0

경로 처리기 다음에 적용 할 수 있고 경로 처리기에서 다음에 호출 할 수있는 두 번째 미들웨어를 만들 수 있습니다. 이 미들웨어에서만 res.send()를 호출합니다. – MatthieuLemoine

관련 문제