2017-01-01 4 views
0

私はpost内部HTMLで<form>から取得したクエリを使用して、私のMongoDBデータベースを要求したい、それは少しトリッキーです...ここで速報でマングースリクエストを作成しますか?

は私のHTMLです:ここでは

<!DOCTYPE html> 

<html> 
    <head> 
     <link rel="stylesheet" href="interface.css" /> 
     <meta charset="UTF-8" /> 
     <title>Bienvenue sur MongoDB !</title> 
    </head> 

    <body>  
     <form method="post" action="/" id="formulaire"> 
      <p> 
       <label for="rectangle">Nombre de rectangles maximum :</label> 
       <input type="range" min="0" max="10" id="rectangle" name="rectangle" /> 
       <span id="texte1"></span> 
      </p> 

      <input type="submit" id="envoyer" value="Envoyer" /> 
     </form> 
    </body> 
</html> 

は私のJavascriptのです。

var mongoose = require('mongoose'); 
var express = require('express'); 
var bodyParser = require('body-parser'); 

mongoose.connect('mongodb://localhost/image', function(err) { 
    if (err) { 
    throw err; 
    } 
}); 

var app = express(); 

app.use(bodyParser.urlencoded({ 
    extended: true 
})); 
app.use(bodyParser.json()); 
app.post('/', function (req, res) {  
    var query = Image.find(null); 

    query.lte('NbRectangles', req.body.rectangle) 

    query.exec(function (err, images) { 
     if (err) { 
     throw err; 
     } 

     for (var i = 0, l = images.length; i < l; i++) 
     console.log('Image : ' + images[i]); 
    }); 
}); 

app.listen(8080); 

mongoose.connection.close(); 

これは、何も表示されません...

マイMongoDBのコレクションは、I空ではありませんちょうどいくつかのコードを削除した、私はテストした後、私はpostの外に部品を入れて、それは動作しますが、私が欲しいものは、ボタンをクリックするたびに端末の要求の結果を表示します。

は...事前にありがとう

+1

req.body.rectangleがnullでないことを確認しましたか? –

+0

はい、私は: 'console.log(req.body.rectangle);'を実行しました。 –

答えて

1

それはあなたの接続がクローズされたリクエストを受信したときのように思えます。クエリを実行した後で接続を閉じる必要があります。また、あなたの身体が空でないかどうかを確認し、要求が処理された後に応答を送信する必要があります:res.sendStatus(200)

+0

'mongoose.connection.close();'を削除しても動作しません。 'mongoose.connection.close();' 'ポスト'の中に 'MongoError:Topology was destroyed'があります。 –

+0

接続を閉じる前に、すべてのdbコールが完了するまで待つ必要があります。アプリケーションの起動中に接続を試み、シャットダウン中に切断することができます。イメージモデルを '必要としましたか? '番号に「長方形」を解析しようとしましたか?エラーをスローするのではなく、名前付きログを追加してみてください。例えば、以下のようにデバッグする方が簡単です: 'if(err){ console.error( 'exec callback:'、err);戻る; } ' –

関連する問題