2016-04-06 4 views
2

Ich muss eine node.js Abfrage erneut ausführen, um die neuesten Einträge zu erhalten. das habe ich bisher versucht.Node.JS eine Node-Msql-Abfrage erneut ausgeführt, ohne Node.js Skript zu beenden

setTimeout(function() { 

connection.query('SELECT * FROM News ORDER BY Content DESC LIMIT 1', function(err, rows, fields){ 
var News = rows[0].Content; 
}, 2000); 

ich gedacht hätte dies gearbeitet hätte, die Abfrage erneut ausgeführt wird, wenn der Timer 0 erreicht, weiß ich 2 Sekunden ein wenig zu kurz ist, war es nur zu Testzwecken.

Alles ist Teil eines express.js Web-Servers, wenn ich zu der Seite navigiere, aktualisiert es den Text mit dem neuesten Eintrag nicht. Was ist der beste Weg, damit umzugehen? Ich muss das Skript neu starten, um die neuesten Einträge zu erhalten, ich möchte es tun, ohne das Skript neu starten zu müssen.

+0

können Sie ein paar weitere Details zur Verfügung stellen? Die Abfrage wird async ausgeführt, Sie müssen also sicher sein, dass Sie diese für Ihre Anforderung bzw. diese Abfrage richtig handhaben. Das setTimeout verhindert nicht, dass die Antwort an den Client zurückgegeben wird. – scottjustin5000

+0

Welche Art von Details? Ich muss nur wissen, wie ich eine MySQL-Abfrage erneut ausführen kann. – FlerrElectronics

+0

Führen Sie die gleiche Abfrage zweimal aus und verwenden Sie setTimeout, um den zweiten Lauf zu verzögern? – scottjustin5000

Antwort

0

Ich denke, Problem ist, dass Sie eine neue Anfrage/Antwort zu tun haben.

Die setTimeout sollte im Browser nicht in node.js festgelegt werden.

SO nach n Sekunden, die Sie wollen, tun Sie eine neue Anfrage/Antwort und dann eine neue Abfrage in die Mysql DB.

Nun, in der anderen Hand haben wir vielleicht einen gecachten resulSet. Um das Zwischenspeichern zu vermeiden, versuchen Sie, den Text Ihrer Abfrage zu ändern. Zum Beispiel schreiben Sie es in Kleinbuchstaben

select * from news order by content desc limit 1 
+0

Ich benutze die News-Variable für die Anzeige des Ergebnisses, es wird einmal aktualisiert, wenn die Datenbank abgefragt wird, aber ich kann nicht mehr als 1 MySQL-Abfrage ausführen gleicher Code? – FlerrElectronics

+0

Was ich sagen möchte Sie ist, dass die Antwort gesendet wird, bevor die zweite Abfrage ausgeführt wird ... also die Antwort bezieht sich auf den ersten Anruf nicht die zweite ... Die setTimeout wird nicht die nächsten Zeilen zum Ausführen anhalten . –

+0

Ich benutze den Timer, so dass es, wenn es ausläuft, die Abfrage erneut ausführen wird? Ich bin verwirrt, was du sagst. – FlerrElectronics

Verwandte Themen