Uso el módulo pg para conectar la base de datos de postgres al proyecto node.js.
const pg = require('pg') const pool = pg.Pool( { "user":"postgres", "password":"password", "host": "localhost", "db" : "db1" }); pool.connect(); pool.on('connect',(client)=> { client.query("insert into table1(id, name) values(1, "item1")") client.query("select * from table 1",(err, res)=>{ if( err) throw err; console.log(res); }); } )Mi código sql está en un archivo llamado script.sql. Mi código es muy similar al anterior y quiero leer del archivo script.sql en lugar de poner el código sql dentro de la función de consulta como client.query("insert into table1(id, name) values(1, 'item1')") . ¿Hay alguna manera de hacerlo en el módulo pg o sugiere una forma efectiva de leer el script en node-postgres?
Puede leer el archivo sincrónicamente antes de que se inicie el servidor ( readFileSync bloquea el servidor):
const pg = require('pg'); const { readFileSync } = require('fs'); const sqlInsert = readFileSync('insert.sql'); const sqlSelect = readFileSync('select.sql'); const pool = pg.Pool({ "user":"postgres", "password":"password", "host": "localhost", "db" : "db1" }); pool.connect(); pool.on('connect', client => { client.query(sqlInsert); client.query(sqlSelect, (err, res) => { if (err) throw err; console.log(res); }); });o lea de forma asincrónica el archivo después de que se inicie el servidor:
const pg = require('pg'); const { readFile } = require('fs'); const pool = pg.Pool({ "user":"postgres", "password":"password", "host": "localhost", "db" : "db1" }); pool.connect(); pool.on('connect', client => { readFile('insert.sql', sqlInsert => { client.query(sqlInsert); }); readFile('select.sql', sqlSelect => { client.query(sqlSelect, (err, res) => { if (err) throw err; console.log(res); }); }); });También puede usar operaciones basadas en promesas en lugar de operaciones basadas en devolución de llamada:
const pg = require('pg'); const { readFile } = require('fs/promises'); const pool = pg.Pool({ "user":"postgres", "password":"password", "host": "localhost", "db" : "db1" }); pool.connect(); pool.on('connect', async client => { await sqlInsert = readFile('insert.sql'); client.query(sqlInsert); await sqlInsert = readFile('select.sql') client.query(sqlSelect, (err, res) => { if (err) throw err; console.log(res); }); });