2017-12-11 6 views
0

私の初心者の質問。 mysqlとejsでnode.jsアプリケーションを構築する方法を学ぶ。私の挑戦は、自分のデータベースから取り出されたデータが自分のレスポンスでどのように送られて表示されるのかを知ることができないということです。過去2日間で、私はここから答えを得て理解するためにさまざまな方法を試しましたが、失敗しました。これは私が一緒に遊んだし、私は私のapp.jsを実行して、私は500応答を取得し、ユーザーにエラーメッセージが定義されていないファイルときnodejsアプリで表示するデータを送信できません

//index.js 

router.get('/home', function(req, res, next) { 
res.locals.connection.query('SELECT * FROM users WHERE id=1', function(err, row) { 
    if(err) { 
     console.log(err); 
    } else { 
     var user = row; 

     res.render('home', { 
      title: 'Home', 
      data: user 
     }); 
    } 
}); 
}); 


//home.ejs 
<p class="text-center pb-2">Hello <%= user.name %></p> 

に助けが必要なコードです。

+1

さて、あなたのレンダリング機能に重要な「データ」を定義するので、私はどのように見ていないだろうテンプレートでは、突然キー「ユーザー」が利用可能になります。 – Gimby

+0

@Gimbyはhome.ejs内で 'user.name'を' data.name'に変更しました。ページはうまくレンダリングされますが、名前は表示されません。代わりに私はこんにちはを取得しますが、私が欲しいのは、こんにちはの世界です。何をすべきかについてのヒント – Mena

答えて

0

これを試してみてください:

router.get('/home', function(req, res, next) { 
res.locals.connection.query('SELECT * FROM users WHERE id=1', function(err, row) { 
    if(err) { 
     console.log(err); 
    } else { 
     var user = row; 
     res.render('home', { 
      title: 'Home', 
      user: user 
     }); 
     } 
    }); 
}); 

あなたはEJSエンジンにユーザーオブジェクトを送信didntの、あなたはdataプロパティ内のユーザーオブジェクトを送りました。


それとも、周りの他の方法で、あなたのhome.ejsファイルで、次のように記述することができます:

<p class="text-center pb-2">Hello <%= data.user.name %></p> 
+0

コードを編集してページを表示できますが、名前は表示されません。私は 'res.send(user)'を実行したときにデータを見ることができるので、 'user.name'を実行したときに私のビューに表示されないのはなぜですか? – Mena

+0

@Mena' console.dir(row) 'snd post結果はここにあるので、私はあなたの 'user'オブジェクトがどのように構築されているのか見ることができます。 – Elad

+0

'[RowDataPacket { ID:1、 名:「マーカス、 電子メール: '[email protected]'、 パスワード 'パスワード'}]' – Mena

関連する問題