Die Node-Express-MySQL-API gibt das JSON-Array als Zeichenfolge aus
P粉575055974
P粉575055974 2024-03-30 12:49:49
0
1
438

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粉575055974
P粉575055974

Antworte allen(1)
P粉170858678

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

npm install mysql2
const mysql = require("mysql2");
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage