Closed paul53 closed 5 months ago
Der $Selector liefert zu viele Einträge im Objekt (s. Log)
Was ist daran falsch? Das deckt sich doch mit der Dokumentation:
Deswegen generiert der Blockly-Code für den Selektor auch folgendes JS:
Array.prototype.slice.apply($('channel[state.id=*]'));
Ja, Blockly liefert das korrekte Array. Auch die each-Schleife funktioniert richtig. Das Objekt ist trotzdem nicht "sauber", was es in Vorgängerversionen war. Siehe auch im Forum.
Das Objekt ist trotzdem nicht "sauber", was es in Vorgängerversionen war
Seit wann ist es denn anders und wie genau sah es vorher aus? Eigentlich hat sich an dem Selektor seit Ewigkeiten nichts geändert.
Seit welcher Version, kann ich nicht genau sagen, aber der Fehler kann noch nicht lange exisitieren.
Vorher hat das Objekt mit {... ,length: N} geendet. Alles was danach kommt, gehört dort nicht rein:
, each: [Function (anonymous)], getState: [Function (anonymous)], getStateAsync: [AsyncFunction (anonymous)], getBinaryState: [Function (anonymous)], getBinaryStateAsync: [Function (anonymous)], setState: [Function (anonymous)], setStateAsync: [AsyncFunction (anonymous)], setStateDelayed: [Function (anonymous)], setBinaryState: [Function (anonymous)], setBinaryStateAsync: [AsyncFunction (anonymous)], on: [Function (anonymous)], [Symbol(Symbol.iterator)]: [GeneratorFunction (anonymous)] }
Alles was danach kommt, gehört dort nicht rein:
Doch, sonst könnte man auf dem Ergebnis ja die Funktionen (siehe Doku) nicht aufrufen. Die müssen ja auf dem Objekt deklariert sein. Und das ist schon seit über 6 Jahren so wenn man in die git history schaut.
z.B. 0534e3692b1bdffc1890af0fa4a39e1fbedd2562
Wenn sich laut Forum nur die Log-Ausgabe von Objekten geändert hat, dann hat sich das Issue erledigt.
Grund dafür war übrigens #1289 - 1e48087904e7859884b7d22d32560bf4efa72c6e
I'm sure that
Script type
Javascript
The problem
Der $Selector liefert zu viele Einträge im Objekt (s. Log)
const ids = $('*(functions=Beleuchtung)[role=switch.light]'); log(ids);
sollte einen Eintrag liefern:{ '0': 'alias.0.Keller.Licht.Waschkueche', length: 1}
iobroker.current.log (in debug mode!)
{ '0': 'alias.0.Keller.Licht.Waschkueche', length: 1, each: [Function (anonymous)], getState: [Function (anonymous)], getStateAsync: [AsyncFunction (anonymous)], getBinaryState: [Function (anonymous)], getBinaryStateAsync: [Function (anonymous)], setState: [Function (anonymous)], setStateAsync: [AsyncFunction (anonymous)], setStateDelayed: [Function (anonymous)], setBinaryState: [Function (anonymous)], setBinaryStateAsync: [AsyncFunction (anonymous)], on: [Function (anonymous)], [Symbol(Symbol.iterator)]: [GeneratorFunction (anonymous)] }
Version of nodejs
18.19.1
Version of ioBroker js-controller
5.0.17
Version of adapter
7.8.0