Adding the capability to connect databases to Express apps is just a matter of loading an appropriate Node.js driver for the database in your app. This document briefly explains how to add and use some of the most popular Node.js modules for database systems in your Express app:
These database drivers are among many that are available. For other options, search on the npm site.
Module: cassandra-driver
$ npm install cassandra-driver
var cassandra = require('cassandra-driver') var client = new cassandra.Client({ contactPoints: ['localhost'] }) client.execute('select key from system.local', function (err, result) { if (err) throw err console.log(result.rows[0]) })
Module: couchnode
$ npm install couchbase
var couchbase = require('couchbase') var bucket = (new couchbase.Cluster('http://localhost:8091')).openBucket('bucketName') // add a document to a bucket bucket.insert('document-key', { name: 'Matt', shoeSize: 13 }, function (err, result) { if (err) { console.log(err) } else { console.log(result) } }) // get all documents with shoe size 13 var n1ql = 'SELECT d.* FROM `bucketName` d WHERE shoeSize = $1' var query = N1qlQuery.fromString(n1ql) bucket.query(query, [13], function (err, result) { if (err) { console.log(err) } else { console.log(result) } })
Module: nano
$ npm install nano
var nano = require('nano')('http://localhost:5984') nano.db.create('books') var books = nano.db.use('books') // Insert a book document in the books database books.insert({ name: 'The Art of war' }, null, function (err, body) { if (err) { console.log(err) } else { console.log(body) } }) // Get a list of all books books.list(function (err, body) { if (err) { console.log(err) } else { console.log(body.rows) } })
Module: levelup
$ npm install level levelup leveldown
var levelup = require('levelup') var db = levelup('./mydb') db.put('name', 'LevelUP', function (err) { if (err) return console.log('Ooops!', err) db.get('name', function (err, value) { if (err) return console.log('Ooops!', err) console.log('name=' + value) }) })
Module: mysql
$ npm install mysql
var mysql = require('mysql') var connection = mysql.createConnection({ host : 'localhost', user : 'dbuser', password : 's3kreee7', database : 'my_db' }); connection.connect() connection.query('SELECT 1 + 1 AS solution', function (err, rows, fields) { if (err) throw err console.log('The solution is: ', rows[0].solution) }) connection.end()
Module: mongodb
$ npm install mongodb
var MongoClient = require('mongodb').MongoClient MongoClient.connect('mongodb://localhost:27017/animals', function (err, db) { if (err) throw err db.collection('mammals').find().toArray(function (err, result) { if (err) throw err console.log(result) }) })
If you want an object model driver for MongoDB, look at Mongoose.
Module: apoc
$ npm install apoc
var apoc = require('apoc') apoc.query('match (n) return n').exec().then( function (response) { console.log(response) }, function (fail) { console.log(fail) } )
Module: oracledb
NOTE: See installation prerequisites.
$ npm install oracledb
const oracledb = require('oracledb'); const config = { user: '<your db user>', // Update me password: '<your db password>', // Update me connectString: 'localhost:1521/orcl' // Update me }; 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);
Module: pg-promise
$ npm install pg-promise
var pgp = require('pg-promise')(/*options*/) var db = pgp('postgres://username:password@host:port/database') db.one('SELECT $1 AS value', 123) .then(function (data) { console.log('DATA:', data.value) }) .catch(function (error) { console.log('ERROR:', error) })
Module: redis
$ npm install redis
var client = require('redis').createClient() client.on('error', function (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', function (err, replies) { console.log(replies.length + ' replies:') replies.forEach(function (reply, i) { console.log(' ' + i + ': ' + reply) }) client.quit() })
Module: tedious
$ npm install tedious
var Connection = require('tedious').Connection; var Request = require('tedious').Request; var config = { userName: 'your_username', // update me password: 'your_password', // update me server: 'localhost' } var connection = new Connection(config); connection.on('connect', function(err) { if (err) { console.log(err); } else { executeStatement(); } }); function executeStatement() { request = new Request("select 123, 'hello world'", function(err, rowCount) { if (err) { console.log(err); } else { console.log(rowCount + ' rows'); } connection.close(); }); request.on('row', function(columns) { columns.forEach(function(column) { if (column.value === null) { console.log('NULL'); } else { console.log(column.value); } }); }); connection.execSql(request); }
Module: sqlite3
$ npm install sqlite3
var sqlite3 = require('sqlite3').verbose() var db = new sqlite3.Database(':memory:') db.serialize(function () { db.run('CREATE TABLE lorem (info TEXT)') var stmt = db.prepare('INSERT INTO lorem VALUES (?)') for (var i = 0; i < 10; i++) { stmt.run('Ipsum ' + i) } stmt.finalize() db.each('SELECT rowid AS id, info FROM lorem', function (err, row) { console.log(row.id + ': ' + row.info) }) }) db.close()
Module: elasticsearch
$ npm install elasticsearch
var elasticsearch = require('elasticsearch') var client = elasticsearch.Client({ host: 'localhost:9200' }) client.search({ index: 'books', type: 'book', body: { query: { multi_match: { query: 'express js', fields: ['title', 'description'] } } } }).then(function (response) { var hits = response.hits.hits }, function (error) { console.trace(error.message) })
© 2017 StrongLoop, IBM, and other expressjs.com contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v3.0.
http://expressjs.com/en/guide/database-integration.html