Maison  >  Questions et réponses  >  le corps du texte

Tableau JSON de sortie de l'API MySQL Node-Express sous forme de chaîne

Essayez de configurer un serveur API Express pour obtenir des données du site Web du portefeuille. J'ai mis en place une table MySQL avec un type de données JSON pour ma colonne "Image". Les "images" doivent avoir plusieurs liens d'images pour la galerie. Cependant, le serveur génère le tableau d'images sous forme de chaîne au lieu d'un tableau de chaînes.

Code Javascript sur le serveur API

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);
  });
});

Résultat

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

Solution

J'ai trouvé une solution de contournement pour obtenir le résultat souhaité, ajoutez ce qui suit :

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"]
  }
]

Pourquoi la requête ne génère-t-elle pas les données du tableau JSON en premier lieu même si j'ai spécifié cette colonne particulière comme type de données JSON dans le tableau ?

P粉575055974P粉575055974184 Il y a quelques jours325

répondre à tous(1)je répondrai

  • P粉170858678

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

    J'ai résolu ce problème. J'utilise le mauvais package de nœud MySQL. Nécessite MySQL2 pour le formatage json.

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

    répondre
    0
  • Annulerrépondre