2016-07-24 3 views
1

私はいくつかのルートを確保するために、expressJsとpassportjs(ローカル戦略)を使用してバックエンドアプリケーションを作成しています。 各ユーザーに関連する情報のみが公開されるように、すべてのデータベースクエリで現在のユーザーの情報を追加する必要があります。 私はreq.userをチェックしている現在のユーザーの情報にアクセスできることは知っていますが、ユーザー情報(またはリクエスト)をパラメータとしてすべてのコールスタックに渡す必要があり、少し不便です。ExpressJsの現在のユーザーにアクセスする - Passport

パラメータに追加することなく、最後の層(SQL文を準備している層)のユーザ情報を取得しますか?

ありがとうございました。

答えて

1

最終層のユーザー情報をidで取得してみませんか? passport-localを使用しているため、req.user.idにアクセスして、最後のデータベースクエリのIDでユーザーにクエリを実行できます。パラメータは必要ありません。

router.post('/your/route', function(req, res) { 
    User.findOne({ 
    where: {id: req.user.id} 
    }).then(function(user) { 
    // do something 
    }); 
//send response 
}); 
+0

感謝を返します。そのようにしても、DBを照会するためにuserIdを渡す必要があります。私はすべてのメソッドに余分なパラメータを追加することを避けようとしています。 – Sole

1

このようにあなたは、2番目のパラメータとしてパスポートのdone関数にカスタムデータを持つユーザーオブジェクトを渡すことができます。

done(null, {id: 1, name: 'John'}); 

req.userは、あなたの答えのために{id: 1, name: 'John'}

関連する問題