Heim  >  Fragen und Antworten  >  Hauptteil

Die Node-Express-MySQL-API gibt das JSON-Array als Zeichenfolge aus

Versuchen Sie, einen Express-API-Server einzurichten, um einige Daten von der Portfolio-Website abzurufen. Ich habe eine MySQL-Tabelle mit einem JSON-Datentyp für meine Spalte „Bild“ eingerichtet. „Bilder“ sollten mehrere Bildlinks für die Galerie enthalten. Allerdings gibt der Server das Bildarray als String statt als Array aus Strings aus.

Javascript-Code auf dem API-Server

app.get("/getWorks", (req, res) => {
  let sql = "select * from works";
  db.query(sql, (err, result) => {
    if (err) throw err;
    console.log(result);
    res.send(result);
  });
});

Ergebnis

[
  {
    "workID": 1,
    "title": "example",
    "images": "[\"https://SERVER_IP/images/example.png\", \"https://SERVER_IP/images/example.png\"]"
  }
]

Lösung

Ich habe einen Workaround gefunden, um die gewünschte Ausgabe zu erhalten. Fügen Sie Folgendes hinzu:

result = result.map((row) => ((row.images = JSON.parse(row.images)), row));
[
  {
    "workID": 1,
    "title": "example",
    "images": ["https://SERVER_IP/images/example.png", "https://SERVER_IP/images/example.png"]
  }
]

Warum gibt die Abfrage die Daten im JSON-Array überhaupt nicht aus, obwohl ich diese bestimmte Spalte als JSON-Datentyp in der Tabelle angegeben habe?

P粉575055974P粉575055974184 Tage vor327

Antworte allen(1)Ich werde antworten

  • P粉170858678

    P粉1708586782024-03-31 11:55:58

    我解决了这个问题。我使用了错误的 MySQL 节点包。需要 MySQL2 进行 json 格式化。

    npm install mysql2
    const mysql = require("mysql2");
    

    Antwort
    0
  • StornierenAntwort