Traduire cette page

Intégration de la base de données

Ajouter la possibilité de connecter des bases de données à des applications Express est juste une question de charger un pilote Node.js approprié pour la base de données dans votre application. Ce document explique brièvement comment ajouter et utiliser certains des modules Node.js les plus populaires pour les systèmes de base de données dans votre application Express :

Ces pilotes de bases de données sont parmi les nombreux qui sont disponibles. Pour d’autres options, recherchez sur le site npm.

Cassandra

Module : cassandra-driver

Installation

Terminal window
npm install cassandra-driver

Exemple

index.cjs
const cassandra = require('cassandra-driver');
const client = new cassandra.Client({ contactPoints: ['localhost'] });
client.execute('select key from system.local', (err, result) => {
if (err) throw err;
console.log(result.rows[0]);
});

Couchbase

Module: couchnode

Installation

Terminal window
npm install couchbase

Exemple

index.cjs
const couchbase = require('couchbase');
const bucket = new couchbase.Cluster('http://localhost:8091').openBucket('bucketName');
// add a document to a bucket
bucket.insert('document-key', { name: 'Matt', shoeSize: 13 }, (err, result) => {
if (err) {
console.log(err);
} else {
console.log(result);
}
});
// get all documents with shoe size 13
const n1ql = 'SELECT d.* FROM `bucketName` d WHERE shoeSize = $1';
const query = N1qlQuery.fromString(n1ql);
bucket.query(query, [13], (err, result) => {
if (err) {
console.log(err);
} else {
console.log(result);
}
});

CouchDB

Module: nano

Installation

Terminal window
npm install nano

Exemple

index.js
const nano = require('nano')('http://localhost:5984');
nano.db.create('books');
const books = nano.db.use('books');
// Insert a book document in the books database
books.insert({ name: 'The Art of war' }, null, (err, body) => {
if (err) {
console.log(err);
} else {
console.log(body);
}
});
// Get a list of all books
books.list((err, body) => {
if (err) {
console.log(err);
} else {
console.log(body.rows);
}
});

LevelDB

Module: levelup

Installation

Terminal window
npm install level levelup leveldown

Exemple

index.cjs
const levelup = require('levelup');
const db = levelup('./mydb');
db.put('name', 'LevelUP', (err) => {
if (err) return console.log('Ooops!', err);
db.get('name', (err, value) => {
if (err) return console.log('Ooops!', err);
console.log(`name=${value}`);
});
});

MySQL

Module: mysql

Installation

Terminal window
npm install mysql

Exemple

index.cjs
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'dbuser',
password: 's3kreee7',
database: 'my_db',
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', (err, rows, fields) => {
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
connection.end();

MongoDB

Module: mongodb

Installation

Terminal window
npm install mongodb

Example (v2.*)

index.js
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/animals', (err, db) => {
if (err) throw err;
db.collection('mammals')
.find()
.toArray((err, result) => {
if (err) throw err;
console.log(result);
});
});

Example (v3.*)

index.js
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/animals', (err, client) => {
if (err) throw err;
const db = client.db('animals');
db.collection('mammals')
.find()
.toArray((err, result) => {
if (err) throw err;
console.log(result);
});
});

If you want an object model driver for MongoDB, look at Mongoose.

Neo4j

Module: neo4j-driver

Installation

Terminal window
npm install neo4j-driver

Exemple

index.cjs
const neo4j = require('neo4j-driver');
const driver = neo4j.driver('neo4j://localhost:7687', neo4j.auth.basic('neo4j', 'letmein'));
const session = driver.session();
session.readTransaction((tx) => {
return tx
.run('MATCH (n) RETURN count(n) AS count')
.then((res) => {
console.log(res.records[0].get('count'));
})
.catch((error) => {
console.log(error);
});
});

Oracle

Module: oracledb

Installation

NOTE: See installation prerequisites.

Terminal window
npm install oracledb

Exemple

index.cjs
const oracledb = require('oracledb');
const config = {
user: '<your db user>',
password: '<your db password>',
connectString: 'localhost:1521/orcl',
};
async function getEmployee(empId) {
let conn;
try {
conn = await oracledb.getConnection(config);
const result = await conn.execute('select * from employees where employee_id = :id', [empId]);
console.log(result.rows[0]);
} catch (err) {
console.log('Ouch!', err);
} finally {
if (conn) {
// conn assignment worked, need to close
await conn.close();
}
}
}
getEmployee(101);

PostgreSQL

Module: pg-promise

Installation

Terminal window
npm install pg-promise

Exemple

index.js
const pgp = require('pg-promise')(/* options */);
const db = pgp('postgres://username:password@host:port/database');
db.one('SELECT $1 AS value', 123)
.then((data) => {
console.log('DATA:', data.value);
})
.catch((error) => {
console.log('ERROR:', error);
});

Redis

Module: redis

Installation

Terminal window
npm install redis

Exemple

index.cjs
const redis = require('redis');
const client = redis.createClient();
client.on('error', (err) => {
console.log(`Error ${err}`);
});
client.set('string key', 'string val', redis.print);
client.hset('hash key', 'hashtest 1', 'some value', redis.print);
client.hset(['hash key', 'hashtest 2', 'some other value'], redis.print);
client.hkeys('hash key', (err, replies) => {
console.log(`${replies.length} replies:`);
replies.forEach((reply, i) => {
console.log(` ${i}: ${reply}`);
});
client.quit();
});

SQL Server

Module: tedious

Installation

Terminal window
npm install tedious

Exemple

index.js
const Connection = require('tedious').Connection;
const Request = require('tedious').Request;
const config = {
server: 'localhost',
authentication: {
type: 'default',
options: {
userName: 'your_username', // update me
password: 'your_password', // update me
},
},
};
const connection = new Connection(config);
connection.on('connect', (err) => {
if (err) {
console.log(err);
} else {
executeStatement();
}
});
function executeStatement() {
request = new Request("select 123, 'hello world'", (err, rowCount) => {
if (err) {
console.log(err);
} else {
console.log(`${rowCount} rows`);
}
connection.close();
});
request.on('row', (columns) => {
columns.forEach((column) => {
if (column.value === null) {
console.log('NULL');
} else {
console.log(column.value);
}
});
});
connection.execSql(request);
}

SQLite

Module: sqlite3

Installation

Terminal window
npm install sqlite3

Exemple

index.js
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database(':memory:');
db.serialize(() => {
db.run('CREATE TABLE lorem (info TEXT)');
const stmt = db.prepare('INSERT INTO lorem VALUES (?)');
for (let i = 0; i < 10; i++) {
stmt.run(`Ipsum ${i}`);
}
stmt.finalize();
db.each('SELECT rowid AS id, info FROM lorem', (err, row) => {
console.log(`${row.id}: ${row.info}`);
});
});
db.close();

Elasticsearch

Module: elasticsearch

Installation

Terminal window
npm install elasticsearch

Exemple

index.cjs
const elasticsearch = require('elasticsearch');
const client = elasticsearch.Client({
host: 'localhost:9200',
});
client
.search({
index: 'books',
type: 'book',
body: {
query: {
multi_match: {
query: 'express js',
fields: ['title', 'description'],
},
},
},
})
.then(
(response) => {
const hits = response.hits.hits;
},
(error) => {
console.trace(error.message);
}
);