Connessione a Oracle con Node.js ed Express

Mattepuffo's logo
Connessione a Oracle con Node.js ed Express

Connessione a Oracle con Node.js ed Express

Oggi ho fatto un piccolo esperimento: connettermi ad un db Oracle con Node.js ed Express.

E devo dire che ha funzionato abbastanza bene; una delle cose migliori è che non richiede una connessione ODBC pre-impostata (cosa che succede con diversi driver in altri linguaggi).

Cominciamo con le dipendenze del nostro package.json:

{
  .....
  "dependencies": {
    "express": "~4.16.1",
    "oracledb": "*"
  }
}

Come vedete abbiamo appunto solo Express e oracledb.

Questo un primo esempio (molto easy, giusto per vedere se effettivamente funziona tutto):

const express = require('express');
const app = express();
const oracledb = require('oracledb');

oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT;

app.get('/', function (req, res) {
  res.send('Hello World!');
  run();
});

async function run() {

  let connection;

  try {
    connection = await oracledb.getConnection(  {
      user          : "user",
      password      : "pwd",
      connectString : "host/db"
    });

    const result = await connection.execute(
		`SELECT * FROM anag_conti`,
    );
    console.log(result.rows);

  } catch (err) {
    console.error(err);
  } finally {
    if (connection) {
      try {
        await connection.close();
      } catch (err) {
        console.error(err);
      }
    }
  }
}


app.listen(3000, function () {
  console.log('App listening on port 3000!');
});

Dovreste vedere apparire i records in formato JSON nella console.

Qui sotto un altro esempio in cui passiamo due parametri alla query:

const express = require('express');
const app = express();
const oracledb = require('oracledb');

oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT;

app.get('/', function (req, res) {
  res.send('Hello World!');
  run();
});

async function run() {

  let connection;

  try {
    connection = await oracledb.getConnection(  {
      user          : "user",
      password      : "pwd",
      connectString : "host/db"
    });

    const result = await connection.execute(
		`SELECT * FROM anag_conti WHERE ditagenda = :ditagenda AND fvl = ' ' AND conto = :conto`,
		['XXL', 'CL00100010']
    );
    console.log(result.rows);

  } catch (err) {
    console.error(err);
  } finally {
    if (connection) {
      try {
        await connection.close();
      } catch (err) {
        console.error(err);
      }
    }
  }
}


app.listen(3000, function () {
  console.log('App listening on port 3000!');
});

Enjoy!


Share this Post

Commentami!