NEWS
Problem mit Asynchronität
-
Habe mich an diesem sendTo synchron verwenden Post orientiert und damit aber noch ein Problem
Prinzipiell funktioniert ja dieses Promising auch bei mir
aber warum nur einmal in meinem Konstrukt??
async function HoleDaten(){ var sqlstr = "SELECT * FROM xxx WHERE Feld = 1" try { const result = await sendToAsync('sql.0', 'query', sqlstr) console.log(result) // mit result weiterarbeiten } catch (e) { // Fehler behandeln } sqlstr = "SELECT * FROM xxx WHERE Feld = 999" try { const result = await sendToAsync('sql.0', 'query', sqlstr) console.log(result) // mit result weiterarbeiten } catch (e) { // Fehler behandeln }
Die erste Logausgabe ist ein leeres result - die zweite ist dann korrekt.
Was mach ich denn falsch bzw. was muss ich denn anders machen? Sorry, ich hab diese Asynchronität bzw. die Verrenkungen um die Abarbeitung der Befehle eben wieder "auf die Reihe" zu bekommen leider noch nicht verinnerlicht und tue mich auch schwer das nachzuvollziehen
-
@thisoft hast du mal die Abfragen getauscht? hier funktioniert das genau so
-
@fastfoot Oh nein - Du hast ja so Recht! Danke für's Brett vom Kopf schlagen
Ich hatte ganz einfach einen Tippfehler in der WHERE-Klausel die im Original ein ganzes Stück komplexer ist als hier das Beispiel..
-
@thisoft Auch komplexe SQLs kannst uns schicken, es findet sich sicher jemand, der das lesen kann und fixen. Ich hab zum Beispiel eine DB mit der Konfiguration gebaut, wann wer online darf und die Geräte noch Gruppen zugeordnet und so:
select substr('00' || timeRule.timeRule_starthour, -2, 2) || ':' ||substr(timeRule.timeRule_startminute || '00', 1, 2) as startTime, substr('00' || timeRule.timeRule_endHour, -2, 2) || ':' || substr(timeRule.timeRule_endminute || '00', 1, 2) as endTime, timeRule_machineDeactivated as activeBlock, lanStation_timeRule.lanStation_timeRule_inactiveDate as ruleInactiveDate, lanStation_timeRule.lanStation_timeRule_inactiveUntilDateTime as ruleInactiveUntil, lanStation.lanStation_name as name, lanStation.lanStation_MAC as MAC, lanStation.lanStation_deactivated as blocked FROM lanStation LEFT OUTER JOIN lanStation_timeRule ON lanStation.lanStation_id = lanStation_timeRule.lanStation_id LEFT JOIN timeRule ON lanStation_timeRule.timeRule_id = timeRule.timeRule_id AND timeRule_weekDayList LIKE '%Mon%' WHERE (lanStation_timeRule.timeRule_id IS NULL AND blocked=1) OR (lanStation_timeRule.timeRule_id IS NOT NULL AND startTime IS NOT NULL);
Ist ne Abfrage an eine SQLite3... Oder ist Dein SQL etwa noch komplexer?
-
@great-sun Danke für Dein Angebot
Aber das Problem lag nicht in der Komplexität an sich sondern einfach darin dass ich durch einen Tippfehler in der WHERE-Klausel eine Bedingung gebaut hatte die eben keine Datensätze zurückgeben konnte. Und ich glaube, DAS hättest du auch nicht rausgefunden - oder weißt du was in meiner Datenbank steht?
-
@thisoft Ach iwo... Es war ja auch nur nett gemeint und etwas witzig gedacht
Manchmal ist es ein ! das zuviel oder zu wenig ist
Das hatte ich heute auch schon lach