0
PostgresにJSONの配列を挿入しようとしています。すべてが正常に実行されたように見えますが(テーブルが作成されます)、データは挿入されず、エラーも表示されません。トランザクションにasync/awaitメソッドを使用していますが、何が失敗しているのか分かりません。JSONがノードのポストグルに失敗する
(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 は、すべてのデータを、今の行が挿入されますINSERTを行方不明に対処するコードを更新しましたが、ありません。
あなたの 'INSERT'はどこにありますか?あなたはテーブルに何も追加していません。 –
あなたのために 'json_populate_recordset'は挿入しませんか?私はpostgres [docs](https://www.postgresql.org/docs/current/static/functions-json.html)に基づいているという印象の下にあったと思います。 –
あなたは誤解しています。それは 'SELECT'の結果を取り込み、レコードを挿入することとは何の関係もありません。 –