2017-01-01 2 views
0

Ich möchte meine MongoDB-Datenbank unter Verwendung einer Abfrage von einem <form> in HTML innerhalb eines post erhalten beantragen, ist es ein bisschen schwierig ...Machen Sie Mungo-Anfrage in Express-Post?

Hier ist mein 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> 

Hier ist mein 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(); 

Dies zeigt nichts ...

Meine MongoDB Sammlung nicht leer I nur etwas Code entfernt, habe ich getestet und wenn ich das Teil innerhalb der post, draußen, Es funktioniert, aber was ich will, ist jedes Mal, wenn ich auf die Schaltfläche klicken Es zeigt auf dem Terminal das Ergebnis der Anfrage.

Vielen Dank im Voraus ...

+1

Haben Sie überprüft, dass req.body.rectangle nicht null ist? –

+0

Ja, ich habe mit: 'console.log (req.body.rectangle);', es funktioniert. –

Antwort

1

Es scheint, wie wenn Sie eine Anfrage Ihre Verbindung erhalten wird geschlossen. Sie sollten Ihre Verbindung nach dem Ausführen Ihrer Abfrage schließen. Außerdem sollten Sie überprüfen, ob Ihr Text nicht leer ist, und die Antwort senden, nachdem Ihre Anfrage bearbeitet wurde: res.sendStatus(200).

+0

Auch wenn ich 'mongoose.connection.close();' lösche, funktioniert es nicht. 'mongoose.connection.close();' innerhalb 'post' gib mir' MongoError: Topologie wurde zerstört'. –

+0

Sie müssen warten, bis alle db-Aufrufe abgeschlossen sind, bevor Sie die Verbindung schließen. Sie können versuchen, während des Startvorgangs eine Verbindung herzustellen und die Verbindung beim Herunterfahren zu trennen. Haben Sie Ihr Image-Modell "benötigt"? Haben Sie versucht, 'Rechteck' zu nummerieren? Versuchen Sie, benannte Protokolle hinzuzufügen, anstatt Fehler zu werfen, es ist einfacher zu debuggen, zum Beispiel: 'if (err) { console.error ('exec callback:', err); Rückkehr; } ' –