NodeJS MySQL prepared statement return value?


03.02.2022, 20:25

Ich arbeite mit einer async function und await.

return new Promise((res) => {
            this.conn.query(sql, data, (err, result) => {
                console.log(result, err);
                if (err) res(false)
                return res(result)
            })
        })
regex9  03.02.2022, 20:54

Der Fehler liegt vermutlich in sql und in data. Welche konkreten Werte haben sie?

ByteMaster42 
Beitragsersteller
 03.02.2022, 21:04

Hi, sql war bei mir

SELECT * FROM table WHERE name = ?

data war bei mir

['Test']

Ich habe grade nochml nachgeguckt, ein Nutzer mit dem Namen "Test" existiert auf jeden Fall.
LG

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Ich habe mir gerade ein Beispiel kurz zusammengebaut, um zu prüfen, ob dein Problem reproduzierbar ist.

const mysql = require("mysql");
const connection = mysql.createConnection({ /* ... */ });
connection.connect();

async function getData(sql, data) {
  return new Promise((res) => {
    connection.query(sql, data, (err, result) => {
      console.log(result, err);
      connection.end();

      if (err) res(false);
      return res(result);
    })
  })
}
            
const result = await getData("SELECT * FROM users WHERE name = ?", ["John Doe"]);
console.log(result);

Das Ergebnis ist allerdings wie zu erwarten, ein Dataset mit entsprechendem Fund. Meine Tabelle hat einen Eintrag mit dem Namen John Doe.

[ RowDataPacket { name: 'John Doe' } ]

Ich würde dir empfehlen, nochmals die Tabellenstruktur in deiner Datenbank zu prüfen. Möglicherweise verbindest du dich mit der falschen Datenbank (die allerdings über dieselbe Tabelle verfügt).

Sofern das passt, geh noch einmal ein paar Schritte zurück und teste anhand des Einleitungbeispiels (aber mit Platzhaltern).


ByteMaster42 
Beitragsersteller
 03.02.2022, 21:35

Vielen Dank, bei mir ging es nun auch
Das problem lag an derer Stelle, ich konnte es nun aber finden

0