NEWS
Alternative für createState (da deprecated)
-
Hallo zusammen,
offenbar soll für die Adapterentwicklung createState() gestrichen und durch extendObject/setObjectNotExists ersetzt werden. Ich bekomme eine entsprechende deprecated-Meldung aber auch in meinem eigenen Javascripts, die teilweise ebenfalls States im Userdataspace anlegen. Was sollte man hier stattdessen nutzen? Eine Funktion namens "setObjectNotExists" will er gar nicht kennen, ganz zu schweigen davon, dass diese in der Doku nicht enthalten ist und dort immer noch createState beschrieben wird... (https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#createstate)
Was also tun mit meinem createSTate--nutzenden Skripten?
Viele Grüße!
-
@ceram sagte: deprecated-Meldung aber auch in meinem eigenen Javascripts
Welche Adapter-Version? Ich erhalte in Version 8.8.3 keine Meldung.
-
meinst du jetzt die Adapterentwicklung oder den javascript adapter?
Das wäre (aktuell noch) unterschiedlich.Wenn du einen Adapter entwickelst, dann tatsächlich extendObject, wobei ich mir das selbst mal noch genauer anschauen muss, da ich das irgendwie nicht mitbekommen habe. Ich kann mir aber vorstellen, das das erst für js-controller 8 gilt? aktuell gibt es die funktionalität noch.
In Zukunft wahrscheinlich die Kombination extendObject (was ja auch ein neues Datenpunktobjekt anlegt, wenn es das objekt noch nicht gibt) + setState um den ersten Wert zu setzen.Im javascript adapter, für deine skripte, gibt es den Befehl
-
-
@ceram said in Alternative für createState (da deprecated):
@paul53 Bei mir läuft der JS-Adapter noch auf 7.0.3 -
Da bist aber "ein bisserl" veraltet.
Ja kann gut sein, dass da Anpassungen im Java Script Adapter vorgenommenw urden um die deprected Funtkionen des js-controllers zu ersetzen. Solltest mal einen Update einplanen - sonst geht auf einmal gar nichts mehr. Und die Erfahrung hat gezeigt dass es umsomerh Prpbleme gibt je veralteter bzw. ja größer ein Versionssprungbeim Update ist.
Die deprectaion von createState (und einigen anderen Funktionern) kenne ich nur für die Adapterentwicklung bezüglich Adaptercode
-
falls du dir aktuell noch nicht sicher bist, dann_
- wenn du wegen Verwendung von createState in Skripten des javascript adapters gefragt hast, dann musst du nichts machen, ausser bei updates des javascript adapters die release notes lesen. ich gehe davon aus, das solch eine Änderung, wenn überhaupt, erst in einem major release remacht wird. als nicht vor 9.0.0 wenn nicht gar 10.0.0
- wenn du es im Rahmen der Adapterentwicklung verwendest, dann solltest du tatsächlich schauen wie das verwendet wird. so wie ich es sehe ist die Änderung nicht so umfangreich. eigentlich nur die Verwendung anderer Funktionsnamen. Dazu kann man dir aber am besten in den discord oder telegram gruppen helfen
-
@oliverio sagte: das solch eine Änderung, wenn überhaupt, erst in einem major release remacht wird.
Das sollte wegen Abwärtskompatibilität unterbleiben!
-
@paul53
höchstwahrscheinlich schon. da müssten schon viele Leute etwas ändern.
Aber theoretisch könnte es dann schon mal angeglichen werden.
Das wäre dann aber sicherlich ein längerer Prozess mit viel Vorlaufzeit und gemeckere im log, das man das ändern sollte. -
@paul53 said in Alternative für createState (da deprecated):
Das sollte wegen Abwärtskompatibilität unterbleiben!
Major Releases können und werden immer wieder mal Breaking Changes enthalten.
Das ist hier aber nicht wirklich das Thema. Der TE sollte nur mal seine Java Script Version 7 (!) aktualisieten. Dass diese mit js-controller 8 ggF inkompatibel werden könnte (betone könnte, derzeit ist mir das nicht bekannt) ist nicht auszuschliessen.