Database Access in Node.js: Connecting Relational and NoSQL Databases
Learn how to access both relational and NoSQL databases in Node.js. This guide covers best practices, examples for MySQL, PostgreSQL, and MongoDB, and provides a comprehensive list of drivers and NPM commands for various databases.
Database Access
Node.js supports both relational and NoSQL databases, requiring specific drivers for each. Here’s a guide to popular databases and their drivers:
Best Practices and Considerations
- Connection Pooling: Use connection pooling to improve performance.
- Error Handling: Implement robust error handling to avoid failures.
- Asynchronous Operations: Handle async operations with promises or async/await.
- Security: Use parameterized queries, validate input, and manage passwords securely.
- ORMs and ODMs: Utilize ORMs like Sequelize and ODMs like Mongoose for easier database interactions.
- Performance Optimization: Optimize queries, use indexing, and consider caching.
MySQL:
Syntax
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test'
});
connection.connect(err => {
if (err) throw err;
console.log('Connected to MySQL!');
});
connection.query('SELECT * FROM users', (err, results) => {
if (err) throw err;
console.log(results);
});
connection.end();
Output
Connected to MySQL!
[ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' } ]
PostgreSQL:
Syntax
const { Client } = require('pg');
const client = new Client({
host: 'localhost',
user: 'postgres',
password: 'password',
database: 'test'
});
client.connect()
.then(() => console.log('Connected to PostgreSQL!'))
.catch(err => console.error('Connection error', err.stack));
client.query('SELECT * FROM users', (err, res) => {
if (err) throw err;
console.log(res.rows);
client.end();
});
Output
Connected to PostgreSQL!
[ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' } ]
NoSQL Databases
MongoDB:
Syntax
const { MongoClient } = require('mongodb');
const url = 'mongodb://localhost:27017';
const client = new MongoClient(url);
client.connect()
.then(() => {
console.log('Connected to MongoDB!');
const db = client.db('test');
return db.collection('users').find({}).toArray();
})
.then(users => {
console.log(users);
client.close();
})
.catch(err => console.error('Connection error', err));
Output
Connected to MongoDB!
[ { _id: ObjectId('...'), name: 'Alice' }, { _id: ObjectId('...'), name: 'Bob' } ]
Code Examples
Here are examples for connecting to different databases and performing CRUD operations:
Relational Databases
Relational Databases | Driver | NPM Command |
---|---|---|
MS SQL Server | mssql | npm install mssql |
Oracle | oracledb | npm install oracledb |
MySQL | mysql | npm install mysql |
PostgreSQL | pg | npm install pg |
SQLite | node-sqlite3 | npm install node-sqlite3 |
NoSQL Databases
NoSQL Databases | Driver | NPM Command |
---|---|---|
MongoDB | mongodb | npm install mongodb |
Cassandra | cassandra-driver | npm install cassandra-driver |
LevelDB | leveldb | npm install level levelup leveldown |
RavenDB | ravendb | npm install ravendb |
Neo4j | neo4j | npm install neo4j |
Redis | redis | npm install redis |
CouchDB | nano | npm install nano |
Note: The list of databases and drivers is extensive. Choose drivers based on your specific needs.