Connessione ODBC con Node.js
Oggi vediamo come poter connettere ad un database un nostro programma scritto in Javascript con Node.js; il tutto usando usando ODBC.
Questo perchè, nel mio caso, avevo bisogno di connettermi ad Oracle, e così mi è risultato più facile.
La prima cosa da considerare è che Node.js e npm devono essere installati (lo do per scontato)
La seconda è che il sistema deve essere predisposto ad usare gli ODBC.
Windows ha già tutto il necessario; quindi, anche se nel caso specifico siamo su Linux, non dovremmo avere problemi su Windows.
Su Linux e macOS, invece, dobbiamo installare unixODBC.
Su Archlinux:
# pacman -Sy unixodbc
Su macOS (non testato):
$ brew install unixodbc
A questo punto ci servono due file:
- package.json
- main.js
Nel primo mettiamo questo:
{
"name": "TEST-ODBC", "version": "1.0.0", "main": "main.js", "description": "TEST ODBC", "keywords": ["util", "functional", "server", "client", "browser"], "author": "", "contributors": [], "dependencies": {
"odbc": "1.2.1", "express": "*"
}
}
Questo installerà due dipendenze:
- odbc
- express
A questo punto lanciamo questo comando:
$ npm install
Verrà creata una cartella node_modules con tutto quello che ci serve.
Nel file main.js invece mettiamo questo:
var express = require('express');
var app = express();
var db = require('odbc')();
var cn = "DRIVER={OracleODBC};SERVER=;UID=;PWD=;DATABASE=";
var port = 8080;
app.get('/', function (req, res) {
db.open(cn, function (err) {
if (err) {
res.send(err);
} else {
var strQuery = "SELECT * FROM tbl";
db.query(strQuery, function (err, data) {
if (err) {
res.send(err);
} else {
res.send(data);
}
});
}
});
db.close();
});
app.get('/:id', function (req, res) {
db.open(cn, function (err) {
if (err) {
res.send(err);
} else {
var strQuery = "SELECT * FROM tbl WHERE id = ?";
db.query(strQuery, [req.params.id], function (err, data) {
if (err) {
res.send(err);
} else {
res.send(data);
}
});
}
});
db.close();
});
var server = app.listen(port, function () {
console.log("Started on http://localhost:" + port);
});
Grazie ad express, creiamo un servizio REST "al volo" (potete vedere anche questo articolo); i dati ci arriveranno in formato JSON.
Abbiamo due funzioni:
- la prima non richiede parametri ed è raggiungibile all'indirizzo http://localhost:8080
- la seconda richiede un parametro, che viene poi inviato alla query, e si raggiunge all'indirizzo http://localhost:8080/10
A questo punto avviate il programma così:
$ node main.js
Se non avete errori, dovreste vedere i dati della query in formato JSON nel vostro browser.
Il codice raccoglie anche eventuali errori del database (credenziali sbagliate o errori di sintassi); anche questi arriveranno in formato JSON.
Enjoy!
javascript nodejs express rest json odbc unixodbc oracle
Commentami!