2017-11-16 8 views
0

私はnode.jsで作業しています。 jadeをテンプレートエンジンとして使用する私は静的なnavbarを表示しています。私はlayout.jadeに保管しました。私はログインフォームを持っていて、navbarにユーザ名を表示する必要があります。私はセッションを使ってユーザ名を保存しています。req.app.locals.env = req.session.username;
ユーザー名はグローバルで、レイアウトで使用できます。その働き。しかし、問題は、別のブラウザで2人のユーザーを開いたときに、ナビゲータの残りのすべてのユーザーに対して最近ログインしたユーザー名だけが表示されることです。誰も私を助けることができますか?Node.js-ルートのjsファイルからレイアウトを送信する方法.jade

ここに私の出力のスクリーンショットがあります。私の出力で

a user logged in chrome(suresh)

another user logged in firefox(user)

ナビゲーションバーがlayout.jadeである私は、すべてのviews.Iに拡張された別のブラウザでは二人のユーザーをオープンしました。 問題は、Navbarの任意のボタンを表示、挿入、ホームrボタンをクリックすると、navbar.Sinceの名前が「ユーザー」に変更され、名前が表示され、セッションの名前がレイアウトに表示されなくなります。ジェイド。レイアウトにユーザー名を表示する方法はありますか?

答えて

0

これは、ユーザー名をセッションに保存していて、最近のログイン後にセッションが更新されるためです。 これを行う最善の方法は、レンダリング時にroutesにuserInfoを送信することです。

res.render('/home', { userInfo: userInfo }); 
+0

layout.jadeをレンダリングできますか?すべての翡翠テンプレートに表示される静的なもの – naresh

+0

あなたはそれをレンダリングすることができますが、すべてのページの基本レイアウトとして保持し、他のすべてのビュー(ホーム、約、連絡先など)でそれを拡張する必要はありませんJade's(layout.pugを拡張)機能。 –

+0

私の質問を編集して出力を追加しました。見てください – naresh

関連する問題