Bevor ich diese Frage gestellt habe, habe ich ein paar SO-Posts mit derselben Überschrift durchgesehen. Alle haben mir vorgeschlagen, meine App neu zu starten. Ich habe das versucht, aber ich bekomme immer noch den Fehler.Node.js - events.js throw er
Der Code, der den Fehler zu werfen ist
app.post('/insert', function(request, response) {
var connection = mySequel.createConnection(ConnectionParams);
connection.connect();
var UserName = request.body.UserName;
// insert into userrecords values ("123456",DEFAULT,DEFAULT,DEFAULT,10);
var InsertQuery = "insert into userrecords values (" + UserName + ",DEFAULT,DEFAULT,DEFAULT,-10);";
connection.query(InsertQuery, function(error, result, fields) {
if (error) {
response.send("error");
console.log(error);
throw error;
} else {
// response.send("success");
console.log(result.insertId);
response.send(result.insertId);
}
});
connection.end();
});
Der Fehler durch den Code verursacht wird, ist dies
events.js:160
2017-04-26T11:42:52.410094+00:00 app[web.1]:
2017-04-26T11:42:52.410092+00:00 app[web.1]: throw er; // Unhandled 'error' event
2017-04-26T11:42:52.410096+00:00 app[web.1]: Error: Quit inactivity timeout
2017-04-26T11:42:52.410097+00:00 app[web.1]: at Quit.<anonymous> (/app/node_modules/mysql/lib/protocol/Protocol.js:160:17)
2017-04-26T11:42:52.410093+00:00 app[web.1]: ^
2017-04-26T11:42:52.410098+00:00 app[web.1]: at emitNone (events.js:86:13)
2017-04-26T11:42:52.410099+00:00 app[web.1]: at Quit._onTimeout (/app/node_modules/mysql/lib/protocol/sequences/Sequence.js:127:8)
2017-04-26T11:42:52.410099+00:00 app[web.1]: at Quit.emit (events.js:185:7)
2017-04-26T11:42:52.410100+00:00 app[web.1]: at ontimeout (timers.js:380:14)
2017-04-26T11:42:52.410101+00:00 app[web.1]: at tryOnTimeout (timers.js:244:5)
2017-04-26T11:42:52.410102+00:00 app[web.1]: at Timer.listOnTimeout (timers.js:214:5)
ich meine App auf Heroku bin Hosting und wenn ich versuche, diese URL für den Zugriff auf die App stürzt ab und zwingt mich, den Dyno neu zu starten. Die Daten, die ich sende, werden erfolgreich in die Datenbank eingefügt, aber der automatisch inkrementierte Primärschlüssel wird nicht an meine App zurückgegeben. Stattdessen erhalte ich einen Serverfehler.
JSON.stringify() gibt den korrekten Wert einmal zurück und danach stürzte die App ab, was dazu führte, dass nachfolgende Anforderungen fehlschlagen.
Wie kann ich dieses Problem lösen?
als eine Randnotiz, das sieht aus wie ein guter Kandidat für einige SQL-Injektion. – Kosch
Ich weiß ... Seit diesem ich einige npm testete, nicht einige Produktionsqualität Code ich nicht viel Aufmerksamkeit. Wenn @Kosch weiß, wo ich lernen kann, diese Art von Code effizienter zu schreiben, bitte mich anweisen. – Tyson