NEWS
JS-Funktion für influxDB2 ohne "await wait(xxxx)" möglich?
-
Hallo,
ich nutze folgende Funktion in meinen Blocklys für die Abfrage der Influx Datenbankvar ergebnis; sendTo('influxdb.0', 'query', 'from(bucket: "'+Bucket+'") |> range(start: '+Start+', stop: '+Ende+') |> filter(fn: (r) => r["_measurement"] == "'+Datenpunkt+'") |> filter(fn: (r) => r["_field"] == "value") |> filter(fn: (r) => r._value > 0) |> group() |>'+Wert+'()', function (result) { if (result.error) { console.error(result.error); } else { ergebnis = JSON.stringify(result); } }); await wait(1000); return ergebnis;
Es funktioniert auch alles, jedoch stört mich das "await wait(xxxx)" am Ende.
Gibt es eine Möglichkeit, dass das Ergebnis "returniert" wird sobald es vorhanden ist? -
so gehts
return new Promise((resolve, reject) => { let value = 0; let query = [ 'from(bucket: "'+Bucket+'")', '|> range(start: '+Start+', stop: '+Ende+')', '|> filter(fn: (r) => r["_measurement"] == "'+Datenpunkt+'")', '|> filter(fn: (r) => r["_field"] == "value")', '|> filter(fn: (r) => r._value > 0) |> group()', '|> '+Wert+'()'].join(''); sendTo('influxdb.0', 'query', query, function (result) { if (result.error) { reject(result.error); } else { value = JSON.stringify(result); resolve(value); }; }); });
-
so, nächstes Problem.
Das Script funktioniert, jedoch stürzt der Javascript Adapter bei Fehlern ab.Ich wollte es nun in ein try / catch verpacken.
Der Adapter stürzt jetzt zwar nicht mehr ab, aber der Fehler wird bei catch nicht sauber in der Konsole ausgegeben.
Wo liegt mein Fehler?try { return new Promise((resolve, reject) => { let Ergebnis = 0 let settings = [ 'import "timezone"', 'import "date"', 'option location = timezone.location(name: "Europe/Berlin")', 'from(bucket: "'+Bucket+'")', '|> range(start: -'+Start+')', '|> filter(fn: (r) => r["_measurement"] == "'+Datenpunkt+'")', '|> filter(fn: (r) => r["_field"] == "value")', '|> aggregateWindow(every: '+Aggregation+', fn: '+fn+', createEmpty: false) ', ].join(''); sendTo('influxdb.0', 'query', settings, function (query) { Ergebnis = query.result[0].map(elm => ({ t: (elm.ts !== null && elm.ts !== undefined) ? elm.ts : null, y: (elm._value !== null && elm._value !== undefined) ? elm._value : null })) resolve(Ergebnis) }) }) } catch (error) { console.warn(error) }