2017-01-02 41 views
0

我使用jSON web標記(simple-jwt)和我的節點應用程序。我有一箇中間件(使用express.js)檢查標記是否爲有效?(),並返回用戶數據(如果爲true)。如何創建一個json對象,並將其附加到node.js中的實際響應中

但是,當用戶對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

相關問題