Estoy tratando de insertar datos de una solicitud de publicación de API para completar las filas en una tabla MySQL. Quiero que la matriz JSON que tiene varios objetos ocupe las filas de la tabla. Parece que no puedo resolverlo usando Express JS. Espero que alguien pueda ayudarme con este problema.
Resultado Esperado:
A continuación se muestra mi fragmento de código JS:
app.post('/dump', (req,res) => { let info = req.body; var sql = "INSERT INTO `testStuff` (`j_object`) VALUES(?)"; mysqlConnection.query(sql,[req.body],(err,rows,fields) => { if (!err) res.send('insert success'); else console.log(err) }) });Ejemplo de cuerpo de publicación:
{ "test": [ { "id": 20, "name": "John Doe", "location": "NY" }, { "id": 21, "name": "Betty Doe", "location": "FL" } ] }Tabla MYSQL:
CREATE TABLE `testStuff` ( `j_object` json NOT NULL )INSERT INTO testStuff (j_object) SELECT value FROM JSON_TABLE(@post_body, '$.test[*]' COLUMNS (value JSON PATH '$')) jsontablehttps://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=b8394f7e3e80942fcae063441bed7af1
En var sql = ... usar ? en lugar de @post_body .