NEWS
ist Objekid in mysql vorhanden
-
Hallo zusammen,
ich habe ein kleines Problem mit der Verbindung von Objektid und SQL.
ich bin was dieses angeht noch Anfänger und habe das ganze so zusammen gepuzzelt.
ich schreibe 3 werte als string in die Datenbank diese sind auch vorhanden ts_string
id=55 ts=1732173193906 val=Name des Anrufers
id=56 ts=1732173193906 val=Telefonnummer des Anrufers
id=57 ts=1732173193906 val=Bild Pfad des Anrufers zb. /vis.0/main/img/anrufer/peter.png
diese kann ich auch abrufen.const telefonnummer = '030655555'; // diese nummer soll von einer Objektid kommen sendTo('sql.0', 'query', `SELECT val, ts, id FROM homematic.ts_string WHERE val LIKE '%${telefonnummer}%'`, (result) => { const uniqueTimestamps = new Set(); result.result.forEach(row => { uniqueTimestamps.add(row.ts); }); uniqueTimestamps.forEach(timestamp => { sendTo('sql.0', 'query', `SELECT val, ts, id FROM homematic.ts_string WHERE ts = ${timestamp}`, (result) => { result.result.forEach(row => { const { val, id } = row; if (id == "55") { console.log(`${val}`); // hier kommt schreiben rein für Bild } if (id == "56") { console.log(`${val}`); // hier kommt schreiben rein für Name } if (id == "57") { console.log(`${val}`); // hier kommt schreiben rein für tel Nummer } }); }); }); });
soweit geht das
jetzt habe ich ver sucht das ganze über eine Objektid zu lösen wenn objektid sich aktualisiert wird dann soll die dort eingetragene Telefonnummer in eine variable gesetzt werden. das geht
es soll nun geprüft werden ob es diese Nummer in der Datenbank gibt wenn ja dann aktualisire Objektid mit den in der DB vorhandenen Daten.on({ id: [].concat(['0_userdata.0.HandyZustand.Anrufer-Nummer']), change: 'any' }, async (obj) => { const telefonnummer = obj.state ? obj.state.val.trim().toLowerCase() : ''; console.log(`${telefonnummer}`); // die nummer wird ausgegeben const result = await sendToAsync('sql.0', 'query', `SELECT val, ts, id FROM homematic.ts_string WHERE val LIKE '%${telefonnummer}%'`, (result) => { if (result.length >= 0) { const uniqueTimestamps = new Set(); result.result.forEach(row => { uniqueTimestamps.add(row.ts); }); uniqueTimestamps.forEach(timestamp => { sendTo('sql.0', 'query', `SELECT val, ts, id FROM homematic.ts_string WHERE ts = ${timestamp}`, (result) => { result.result.forEach(row => { const { val, id } = row; if (id == "55") { console.log(`${val}`); // hier für Bild } if (id == "56") { console.log(`${val}`); // hier für Name } if (id == "57") { console.log(`${val}`); // hier für Telefonnummer } }); }); }); } else { console.log(`kein zugrif auf db`); } }); });
als Ausgabe bekomme ich nur
kein zugrif auf db
wo liegt hier das Problem ich komme nicht weiter vielleicht hat ja einer eine idee -
Warum baust du die Anfrage der
Nummer nicht genau so auf wie vom timestamp?
Ohne const und await.
Zusätzlich würde ich mir das result von der Nummer im log mal ausgeben um zu wissen was zurück kommt. -
@tt-tom das soll ein Telefonbuch werden in Verbindung mi dem tr-064 Adapter und vom Handy über macrodroid was auch alles geht daher brauche ich die Nummer ich habe ja mehrere Einträge in der db.
der timestamp ist immer 3x gleich für die einträge in der db daher kann ich nur die val mit der Telefonnummer abfragen. Cbei result kommt nichts zurück er geht gar nicht erst dort hin habe es auch mit diesem Scrip probiert er geht nicht in die db
on({ id: [].concat(['0_userdata.0.HandyZustand.Anrufer-Nummer']), change: 'any' }, async (obj) => { const telefonnummer = obj.state ? obj.state.val.trim().toLowerCase() : ''; console.log(`${telefonnummer}`); // die nummer wird ausgegeben sendTo('sql.0', 'query', `SELECT val, ts, id FROM homematic.ts_string WHERE val LIKE '%${telefonnummer}%'`, (result) => { const uniqueTimestamps = new Set(); result.result.forEach(row => { uniqueTimestamps.add(row.ts); }); uniqueTimestamps.forEach(timestamp => { sendTo('sql.0', 'query', `SELECT val, ts, id FROM homematic.ts_string WHERE ts = ${timestamp}`, (result) => { result.result.forEach(row => { const { val, id } = row; if (id == "55") { console.log(`${val}`); // hier kommt schreiben rein für Bild } if (id == "56") { console.log(`${val}`); // hier kommt schreiben rein für Name } if (id == "57") { console.log(`${val}`); // hier kommt schreiben rein für tel Nummer } }); }); }); }); });
es wird nur das obere log ausgegeben aber nichts aus der db
-
@mrbelvedere58 hat sich erledigt die Nummer in der db hatten ein Leerzeichen drin
trotzdem vielen dank -
@mrbelvedere58 [Gelöst]