Intégration de bases de données

L’ajout de la fonctionnalité permettant de connecter des bases de données aux applications Express consiste simplement à charger un pilote Node.js approprié pour les bases de données de votre application. Ce document explique brièvement comment ajouter et utiliser dans votre application Express certains des modules Node.js les plus populaires pour les systèmes de base de données :

Ces pilotes de base de données ne sont qu’une partie de ceux disponibles. Pour d’autres options, consultez le site npm.

Cassandra

Module : cassandra-driver Installation

Installation

$ npm install cassandra-driver 

Exemple

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

$ npm install couchbase 

Exemple

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

Installation

$ npm install nano 

Exemple

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

Installation

$ npm install level levelup leveldown 

Exemple

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

Installation

$ npm install mysql 

Exemple

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

Installation

$ npm install mongodb 

Example (v2.*)

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.*)

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) }) }) 

Si vous voulez un pilote de modèle d’objet pour MongoDB, recherchez Mongoose.

Neo4j

Module : apoc Installation

Installation

$ npm install neo4j-driver 

Exemple

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

Remarque: Voir les conditions préalables à l’installation.

$ npm install oracledb 

Exemple

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

Installation

$ npm install pg-promise 

Exemple

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

Installation

$ npm install redis 

Exemple

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

$ npm install tedious 

Exemple

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

Installation

$ npm install sqlite3 

Exemple

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

Installation

$ npm install elasticsearch 

Exemple

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) }) 
Edit this page