NEWS
[Frage] SQL-Abfrage und Zugriff auf einen Wert des results
-
was bekommst du den jetzt in deinem log, wird der SQL query als JSON zurueck geschrieben ?
-
was bekommst du den jetzt in deinem log, wird der SQL query als JSON zurueck geschrieben ? `
Die Zeile````
console.log('Rows: ' + JSON.stringify(result.result));javascript.0 script.js.test.TEST_SQL_Abfrage: Rows: [{"id":1,"max(from_unixtime((
ts
/ 1000)))":"2018-01-01 20:26:43.8890","val":18.5,"ack":1,"_from":1,"q":0}]Bei allen anderen "console.log"-Anweisungen erscheint im Log
javascript.0 script.js.test.TEST_SQL_Abfrage: undefined
-
ok also wird var myJSON nicht gefuellt mit
var myJSON = JSON.stringify(result.result);
Probier mal diesen zu ersetzen mit:
var myJSON = JSON.parse(results);
was sagt dein log dan ?
-
Probier mal diesen zu ersetzen mit:
var myJSON = JSON.parse(results);
was sagt dein log dan ? `
Dann kommt eine Fehlermeldung:
javascript.0 SyntaxError: Unexpected token o in JSON at position 1 at Object.parse (native) at Object.cb (script.js.test.TEST_SQL_Abfrage:10:23) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3151:71) at RedisClient. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:104:25) at emitThree (events.js:116:13) at RedisClient.emit (events.js:194:7) at return_pub_sub (/opt/iobroker/node_modules/redis/index.js:794:18) at RedisClient.return_reply (/opt/iobroker/node_modules/redis/index.js:833:9) at JavascriptRedisParser.returnReply (/opt/iobroker/node_modules/redis/index.js:192:18) at JavascriptRedisParser.execute (/opt/iobroker/node_modules/redis-parser/lib/parser.js:574:12)
` > ok also wird var myJSON nicht gefuellt mit
var myJSON = JSON.stringify(result.result); ```` `
Ich glaube das funktioniert schon. Denn bei
var myJSON = JSON.stringify(result.result); console.log(myJSON);
erscheint im Log````
[{"id":1,"max(from_unixtime((ts
/ 1000)))":"2018-01-01 21:26:43.8920","val":18.5,"ack":1,"_from":1,"q":0}]Aber nun weiß ich einfach nicht, wie ich auf einen konkreten Wert (z.B. val) zugreifen kann.
-
ah ! dan hatte ich was falsch verstanden sorry !
probierl mal:
log(myJSON.result.val
-
[quote="Dutchman"
probierl mal:
log(myJSON.result.val
Hm… bei````
console.log(myJSON.result.val);kommt wieder eine Fehlermeldung```` javascript.0 TypeError: Cannot read property 'val' of undefined at Object.cb (script.js.test.TEST_SQL_Abfrage:12:33) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3151:71) at RedisClient. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:104:25) at emitThree (events.js:116:13) at RedisClient.emit (events.js:194:7) at return_pub_sub (/opt/iobroker/node_modules/redis/index.js:794:18) at RedisClient.return_reply (/opt/iobroker/node_modules/redis/index.js:833:9) at JavascriptRedisParser.returnReply (/opt/iobroker/node_modules/redis/index.js:192:18) at JavascriptRedisParser.execute (/opt/iobroker/node_modules/redis-parser/lib/parser.js:574:12) at Socket. (/opt/iobroker/node_modules/redis/index.js:274:27)
-
entferne.Probiere es mal so:
sendTo('sql.0', 'query', 'SELECT `id`, max(from_unixtime((`ts` / 1000))), `val`, `ack`, `_from`, `q` FROM `ioBroker`.`ts_number` WHERE (`id` = 1)', function (result) { if (result.error) { console.error(result.error); } else { // show result console.log('Rows: ' + JSON.stringify(result.result)); var myJSON = JSON.stringify(result.result); var test = myJSON.substring(1, myJSON.length-1); testString = JSON.parse(test); console.log(testString.val); } });
jetzt sollte das JSON auslesen einfach gehen und kannst du anstatt .val auch .id usw nehmen (werte konform deines querys)~Dutch
-
Result ist ein Array mit Objekten drin und KEIN JSON!!
Also ein result.result[0].val
sollte genau das sein was Du brauchst
-
Result ist ein Array mit Objekten drin und KEIN JSON!!
Also ein result.result[0].val
sollte genau das sein was Du brauchst `
Danke!! Genau das hat funktioniert!entferne.t `
Auch vielen Dank hierfür! Auch das hat geklappt.Jetzt hab ich trotzdem leider noch eine Frage. Mit````
var myJSON = JSON.stringify(result.result); -
Denn substring habe ich benutzt um die [] zu entfernen mir ging die json Abfrage nicht
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
JSON ist eine Textform der Datenstruktur, das heisst nacj JSON.stringify is es einfach ein Text-String. Da kannst Du auf nichts mehr zugreifen