Travail avec les bases de données en JavaScript (Node.js) : PostgreSQL et MongoDB pour débutants
Lors du développement d'applications web en JavaScript (Node.js), il est presque toujours nécessaire de sauvegarder des données : utilisateurs, commandes, articles ou journaux. Pour cela, on utilise des bases de données (BDD). Dans ce guide, nous allons aborder deux des systèmes les plus populaires : la base relationnelle PostgreSQL et la base orientée documents MongoDB. Vous apprendrez comment vous y connecter depuis Node.js et effectuer les opérations CRUD de base (création, lecture, mise à jour, suppression).
Cet article est destiné aux développeurs débutants qui connaissent les bases de JavaScript. Tous les exemples de code peuvent être exécutés dans votre projet.
1. PostgreSQL : base de données relationnelle
PostgreSQL est une base de données SQL puissante où les données sont stockées dans des tables avec des types de champs stricts. Pour travailler avec elle dans Node.js, nous utiliserons le package pg.
1.1. Installation et connexion
Commencez par installer le package via npm :
npm install pgCréez un fichier db.js et configurez la connexion à la base de données locale :
const { Pool } = require('pg');
const pool = new Pool({ user: 'postgres', host: 'localhost', database: 'mydb', password: 'password', port: 5432,});
module.exports = pool;1.2. Création de table et opérations CRUD
Pour commencer, créons une table users avec les champs id, name et email. Ensuite, nous effectuerons toutes les opérations de base.
const pool = require('./db');
// Création de la tableasync function createTable() { await pool.query(` CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL ); `); console.log('Table users créée');}
// Insertion de données (CREATE)async function addUser(name, email) { const result = await pool.query( 'INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *', [name, email] ); return result.rows[0];}
// Lecture de données (READ)async function getUsers() { const result = await pool.query('SELECT * FROM users'); return result.rows;}
// Mise à jour de données (UPDATE)async function updateUser(id, name) { const result = await pool.query( 'UPDATE users SET name = $1 WHERE id = $2 RETURNING *', [name, id] ); return result.rows[0];}
// Suppression de données (DELETE)async function deleteUser(id) { await pool.query('DELETE FROM users WHERE id = $1', [id]); console.log('Utilisateur supprimé');}
// Exemple d'utilisation(async () => { await createTable(); const newUser = await addUser('Иван', 'ivan@example.com'); console.log('Ajouté :', newUser);
const users = await getUsers(); console.log('Tous les utilisateurs :', users);
await updateUser(1, 'Пётр'); await deleteUser(2);})();Important : Utilisez toujours des requêtes paramétrées (via $1, $2) pour éviter les injections SQL.
2. MongoDB : base de données NoSQL
MongoDB stocke les données dans un format de documents de type JSON (BSON). Pour Node.js, on utilise le pilote officiel mongodb ou la bibliothèque populaire mongoose. Dans cet exemple, nous utiliserons le pilote.
2.1. Installation et connexion
npm install mongodbConnexion à MongoDB locale (port par défaut 27017) :
const { MongoClient } = require('mongodb');
const uri = 'mongodb://localhost:27017';const client = new MongoClient(uri);
async function connect() { await client.connect(); console.log('Connecté à MongoDB'); return client.db('mydb'); // base de données mydb}
module.exports = { connect, client };2.2. Opérations CRUD avec une collection
Dans MongoDB, les tables sont appelées collections et les lignes —