2017-01-02 3 views
0

ノードアプリケーションでjSON Webトークン(simple-jwt)を使用します。私はトークンisValid?()をチェックし、trueの場合はユーザーデータを返すミドルウェア(express.jsを使用)を持っています。node.jsの実際の応答に追加されるjsonオブジェクトを作成するには

しかし、ユーザーがlocalhost:8080/homeまたは他のルートへのGETリクエストを実行したときには、tokenhost:8080/homeの実際の内容と(tokenValidationミドルウェアからの)ユーザーデータを返す必要があります。 response.json({})を2回使用することはできません。それは2つの応答とみなされるからです。

実際の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

ルートハンドラの後に適用し、ルートハンドラで次のコールを行うことができる2番目のミドルウェアを作成できます。このミドルウェアでのみres.send()と呼びます。 – MatthieuLemoine

関連する問題