1

パスポートからブラウザにユーザー オブジェクトを送信しようとしていますが、取得できるのはwindow.user undefinedコンソールだけです。

オブジェクトをチェックしたルートでconsole.log("USER:"+JSON.stringify(req.user, null, 4))

適切な出力が得られます。

USER :{
    "emails": [
        {}
    ],
    "nick": "nickname",
    "identifier": "76561197990749921",
    "points": 140
}

送信しようとしているres.render('index', {user: req.user});ときに、ウィンドウオブジェクトから取得できません。しかし、たとえば、いくつかのプロパティを送信すると、想定どおりres.render('index', {user: req.user.points});に添付さwindow.userれます...一方、送信しようとしている間req.user.nickも添付されていませんwindow。何が問題なのですか?

4

1 に答える 1

3

render はオブジェクトを保持しません。関数に渡すオブジェクトは.render、テンプレートの文字列マクロとして使用されるため、インデックス テンプレートに{{ user }}orが含まれている場合 (選択したテンプレート エンジンに応じた構文)、コンテンツが強制される文字列<% user %>が書き込まれます。あなたのファイル。user

索引:

<p>{{ user }}</p>

電話:

res.render('index', {user: {"name": "monkey"}});

結果:

<p>{"name": "monkey"}</p>

これはテキストであり、JavaScript オブジェクトではありません。もちろん、文字列がスクリプト ブロックに入るようにすることもできます。

索引:

<script> var user = {{ user }}; </script>

電話:

res.render('index', {user: {"name": "monkey"}});

結果:

<script> var user = {"name": "monkey"}; </script>

これで、ページ上の JavaScript の残りの部分で突然使用できるようになりました。

于 2013-09-19T19:37:43.293 に答える