Heim > Fragen und Antworten > Hauptteil
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粉1708586782024-03-31 11:55:58
我解决了这个问题。我使用了错误的 MySQL 节点包。需要 MySQL2 进行 json 格式化。
npm install mysql2
const mysql = require("mysql2");