Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage] SQL-Abfrage und Zugriff auf einen Wert des results

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Frage] SQL-Abfrage und Zugriff auf einen Wert des results

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      George_Best last edited by

      Bitte entschuldigt meine Ungeduld, aber ich komm einfach nicht weiter…

      Habe schon alles mögliche versucht, um auf einen Wert (z.B. "val") des JSON zuzugreifen:

      console.log(myJSON.val);
      console.log(myJSON["val"]);
      

      Es erscheint immer nur "undefined" :roll:

      NIemand eine Idee für mich? :oops:

      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        was bekommst du den jetzt in deinem log, wird der SQL query als JSON zurueck geschrieben ?

        1 Reply Last reply Reply Quote 0
        • G
          George_Best last edited by

          @Dutchman:

          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

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            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 ?

            1 Reply Last reply Reply Quote 0
            • G
              George_Best last edited by

              @Dutchman:

              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.
              1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators last edited by

                ah ! dan hatte ich was falsch verstanden sorry !

                probierl mal:

                log(myJSON.result.val
                
                1 Reply Last reply Reply Quote 0
                • G
                  George_Best last edited by

                  [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)
                  
                  1 Reply Last reply Reply Quote 0
                  • Dutchman
                    Dutchman Developer Most Active Administrators last edited by

                    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

                    1 Reply Last reply Reply Quote 0
                    • apollon77
                      apollon77 last edited by

                      Result ist ein Array mit Objekten drin und KEIN JSON!!

                      Also ein result.result[0].val

                      sollte genau das sein was Du brauchst

                      1 Reply Last reply Reply Quote 0
                      • G
                        George_Best last edited by

                        @apollon77:

                        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! 😄

                        @Dutchman:

                        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);

                        1 Reply Last reply Reply Quote 0
                        • Dutchman
                          Dutchman Developer Most Active Administrators last edited by

                          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

                          1 Reply Last reply Reply Quote 0
                          • apollon77
                            apollon77 last edited by

                            JSON ist eine Textform der Datenstruktur, das heisst nacj JSON.stringify is es einfach ein Text-String. Da kannst Du auf nichts mehr zugreifen 🙂

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            554
                            Online

                            31.9k
                            Users

                            80.2k
                            Topics

                            1.3m
                            Posts

                            3
                            13
                            1125
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo