Node.js
Node.js mit Oracle
Suche…
Stellen Sie eine Verbindung zu Oracle DB her
Eine sehr einfache Möglichkeit, eine Verbindung zu einer ORACLE-Datenbank oracledb
ist das oracledb
Modul. Dieses Modul übernimmt die Verbindung zwischen Ihrer Node.js-App und dem Oracle-Server. Sie können es wie jedes andere Modul installieren:
npm install oracledb
Nun müssen Sie eine ORACLE-Verbindung erstellen, die Sie später abfragen können.
const oracledb = require('oracledb');
oracledb.getConnection(
{
user : "oli",
password : "password",
connectString : "ORACLE_DEV_DB_TNS_NAME"
},
connExecute
);
Der connectString "ORACLE_DEV_DB_TNA_NAME" kann in einer tnsnames.org-Datei im selben Verzeichnis oder in dem Ihr Oracle-Instant-Client installiert ist.
Wenn Sie keinen Oracle-Instant-Client auf Ihrem Entwicklungscomputer installiert haben, können Sie der instant client installation guide
für Ihr Betriebssystem folgen.
Fragen Sie ein Verbindungsobjekt ohne Parameter ab
Use kann jetzt die connExecute-Funktion zum Ausführen einer Abfrage verwenden. Sie haben die Möglichkeit, das Abfrageergebnis als Objekt oder Array abzurufen. Das Ergebnis wird in console.log gedruckt.
function connExecute(err, connection)
{
if (err) {
console.error(err.message);
return;
}
sql = "select 'test' as c1, 'oracle' as c2 from dual";
connection.execute(sql, {}, { outFormat: oracledb.OBJECT }, // or oracledb.ARRAY
function(err, result)
{
if (err) {
console.error(err.message);
connRelease(connection);
return;
}
console.log(result.metaData);
console.log(result.rows);
connRelease(connection);
});
}
Da wir eine Verbindung ohne Pooling verwendet haben, müssen wir die Verbindung wieder freigeben.
function connRelease(connection)
{
connection.close(
function(err) {
if (err) {
console.error(err.message);
}
});
}
Die Ausgabe für ein Objekt wird sein
[ { name: 'C1' }, { name: 'C2' } ]
[ { C1: 'test', C2: 'oracle' } ]
und die Ausgabe für ein Array wird sein
[ { name: 'C1' }, { name: 'C2' } ]
[ [ 'test', 'oracle' ] ]
Verwendung eines lokalen Moduls zur einfacheren Abfrage
Um das Abfragen von ORACLE-DB zu vereinfachen, können Sie Ihre Abfrage folgendermaßen aufrufen:
const oracle = require('./oracle.js');
const sql = "select 'test' as c1, 'oracle' as c2 from dual";
oracle.queryObject(sql, {}, {})
.then(function(result) {
console.log(result.rows[0]['C2']);
})
.catch(function(err) {
next(err);
});
Der Aufbau der Verbindung und deren Ausführung ist in dieser Datei oracle.js mit folgendem Inhalt enthalten:
'use strict';
const oracledb = require('oracledb');
const oracleDbRelease = function(conn) {
conn.release(function (err) {
if (err)
console.log(err.message);
});
};
function queryArray(sql, bindParams, options) {
options.isAutoCommit = false; // we only do SELECTs
return new Promise(function(resolve, reject) {
oracledb.getConnection(
{
user : "oli",
password : "password",
connectString : "ORACLE_DEV_DB_TNA_NAME"
})
.then(function(connection){
//console.log("sql log: " + sql + " params " + bindParams);
connection.execute(sql, bindParams, options)
.then(function(results) {
resolve(results);
process.nextTick(function() {
oracleDbRelease(connection);
});
})
.catch(function(err) {
reject(err);
process.nextTick(function() {
oracleDbRelease(connection);
});
});
})
.catch(function(err) {
reject(err);
});
});
}
function queryObject(sql, bindParams, options) {
options['outFormat'] = oracledb.OBJECT; // default is oracledb.ARRAY
return queryArray(sql, bindParams, options);
}
module.exports = queryArray;
module.exports.queryArray = queryArray;
module.exports.queryObject = queryObject;
Beachten Sie, dass Sie die beiden Methoden queryArray und queryObject für Ihr Oracle-Objekt aufrufen können.