2017-10-20 8 views
0

GETメソッドを使用してフォームデータにアクセスしようとしていますが、未定義です。入力値がフォームから未定義です

URL:GET /search?email=dsdsd%40gmail.com私のようにフォームを作成しています私の見解では

  // search.jade 
     // register form 
       form(method='GET' action='/search') 
        div.form-group 
        label(for='email') Email: 
        input#favoriteBook.form-control(type='email', placeholder='' name='email' required) 
        button.btn.btn-primary(type='submit') Search 

そして、私のapp.jsに:

   app.get('/search',function(req,res){ // Performing search 
       console.log(req.body.email); // getting UNDEFINED 
       loadSchema.find({email: req.body.email},function(err,users){ 
        res.render('list',{users: users}); 
       }); 
      }); 
+1

ようこそ、スタックオーバーフロー!私はあなたの質問を編集しました。より良い応答を受け取るためにstackoverflowのガイドラインに従ってください。無関係なタグと問題のコードを追加しないでください。最初にあなたの問題を説明し、あなたがしたことを説明するよりも。がんばろう! –

答えて

0

の下に行くあなたはreq.queryオブジェクトからクエリ文字列パラメータにアクセスすることができます。したがって、メールのプロパティ値はreq.query.emailになります。 req.queryの詳細については、http://expressjs.com/en/api.html#req.queryを参照してください。あなたのapp.jsで次のように変更してください

app.get('/search',function(req,res){ // Performing search 
    console.log(req.query.email); // prints email value 
    loadSchema.find({email: req.query.email},function(err,users){ 
    res.render('list',{users: users}); 
}); 
0

問題は、GETリクエストの本体にアクセスしようとしていますが、POST要求を使用する必要のある本体にアクセスするための本体がGETリクエストにありませんが、その値を問合せ文字列として送信しているためですparam、あなたの急行のコードで、あなたはそれをこのようにキャッチすることができます:

app.get('/search',function(req,res){ // Performing search 
      console.log(req.params.email); // no UNDEFINED 
      loadSchema.find({email: req.params.email},function(err,users){ 
       res.render('list',{users: users}); 
      }); 
     }); 

クエリ文字列のparamsはreq.params.attributeName

+0

フォームのメソッド名をPOSTとbodyでparamsに変更しました。それは問題を解決しておらず、値はコンソールに書き込まれていません。 –

関連する問題