Je tente d'insérer un tableau de JSON dans Postgres. Tout semble fonctionner correctement (la table est créée), mais aucune donnée n'est insérée et aucune erreur n'est donnée. J'utilise la méthode async/await pour les transactions, mais je ne peux pas comprendre ce qui échoue.Insérer JSON échoue nœud Postgres
(async() => {
const client = await pool.connect()
let val= [
{"table_pk":1,"NAME":"my Great Name","ROLE":"name1"},
{"table_pk":2,"NAME":"new Name","ROLE":"name1"},
{"table_pk":3,"NAME":"someone's funny name","ROLE":"name1"}
]
try {
await client.query('BEGIN');
await client.query('DROP TABLE IF EXISTS myTable')
await client.query(`CREATE TABLE myTable(table_pk INTEGER PRIMARY KEY, name TEXT, role TEXT)`)
await client.query(`INSERT INTO myTable SELECT * FROM jsonb_populate_recordset(NULL::myTable, $1::jsonb)`,[JSON.stringify(val)]);
await client.query('COMMIT');
}
catch (e) {
await client.query('ROLLBACK');
throw e
}
finally {
client.release();
}
})().catch(e => console.error(e.stack))
EDIT Mise à jour le code pour tenir compte des manquants INSERT, maintenant des lignes insérera, mais pas toutes les données.
Et où est votre 'INSERT'? Vous n'ajoutez rien dans la table. –
'json_populate_recordset' ne fait-il pas l'insertion pour vous? Je suppose que j'étais sous l'impression qu'il serait basé sur le postgres [docs] (https://www.postgresql.org/docs/current/static/functions-json.html) –
Vous êtes malentendu. Il remplit le résultat du SELECT, il n'a rien à voir avec l'insertion d'enregistrements. –