En aquest tema, aprendrem a construir una aplicació de comerç electrònic utilitzant MongoDB com a base de dades. Aquesta aplicació inclourà funcionalitats bàsiques com la gestió de productes, la gestió de comandes i la gestió d'usuaris. A més, veurem com estructurar les dades de manera eficient per a una aplicació de comerç electrònic.
Continguts
Requisits Previs
Abans de començar, assegura't de tenir instal·lats els següents components:
- MongoDB
- Un entorn de desenvolupament (IDE) com Visual Studio Code
- Node.js i npm (per a la part de backend)
- Coneixements bàsics de JavaScript i Node.js
Estructura de la Base de Dades
Per a una aplicació de comerç electrònic, necessitarem almenys les següents col·leccions:
- Productes: Per emmagatzemar informació sobre els productes.
- Usuaris: Per emmagatzemar informació sobre els usuaris.
- Comandes: Per emmagatzemar informació sobre les comandes realitzades pels usuaris.
Col·lecció de Productes
{ "_id": "ObjectId", "nom": "String", "descripció": "String", "preu": "Number", "categoria": "String", "stock": "Number", "imatgeURL": "String" }
Col·lecció d'Usuaris
{ "_id": "ObjectId", "nom": "String", "email": "String", "contrasenya": "String", "adreça": "String", "telèfon": "String" }
Col·lecció de Comandes
{ "_id": "ObjectId", "usuariId": "ObjectId", "productes": [ { "producteId": "ObjectId", "quantitat": "Number" } ], "total": "Number", "data": "Date", "estat": "String" }
Gestió de Productes
Crear un Producte
const MongoClient = require('mongodb').MongoClient; const url = 'mongodb://localhost:27017'; const dbName = 'ecommerce'; async function crearProducte(producte) { const client = new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true }); try { await client.connect(); const db = client.db(dbName); const result = await db.collection('productes').insertOne(producte); console.log(`Producte creat amb l'ID: ${result.insertedId}`); } finally { await client.close(); } } const nouProducte = { nom: 'Samarreta', descripció: 'Samarreta de cotó', preu: 19.99, categoria: 'Roba', stock: 100, imatgeURL: 'http://example.com/samarreta.jpg' }; crearProducte(nouProducte);
Llegir Productes
async function llegirProductes() { const client = new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true }); try { await client.connect(); const db = client.db(dbName); const productes = await db.collection('productes').find().toArray(); console.log(productes); } finally { await client.close(); } } llegirProductes();
Gestió d'Usuaris
Crear un Usuari
async function crearUsuari(usuari) { const client = new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true }); try { await client.connect(); const db = client.db(dbName); const result = await db.collection('usuaris').insertOne(usuari); console.log(`Usuari creat amb l'ID: ${result.insertedId}`); } finally { await client.close(); } } const nouUsuari = { nom: 'Joan', email: '[email protected]', contrasenya: 'password123', adreça: 'Carrer Fals, 123', telèfon: '123456789' }; crearUsuari(nouUsuari);
Llegir Usuaris
async function llegirUsuaris() { const client = new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true }); try { await client.connect(); const db = client.db(dbName); const usuaris = await db.collection('usuaris').find().toArray(); console.log(usuaris); } finally { await client.close(); } } llegirUsuaris();
Gestió de Comandes
Crear una Comanda
async function crearComanda(comanda) { const client = new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true }); try { await client.connect(); const db = client.db(dbName); const result = await db.collection('comandes').insertOne(comanda); console.log(`Comanda creada amb l'ID: ${result.insertedId}`); } finally { await client.close(); } } const novaComanda = { usuariId: 'ObjectId("60c72b2f9b1d4c3d88f8e8b5")', productes: [ { producteId: 'ObjectId("60c72b2f9b1d4c3d88f8e8b6")', quantitat: 2 }, { producteId: 'ObjectId("60c72b2f9b1d4c3d88f8e8b7")', quantitat: 1 } ], total: 59.97, data: new Date(), estat: 'pendent' }; crearComanda(novaComanda);
Llegir Comandes
async function llegirComandes() { const client = new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true }); try { await client.connect(); const db = client.db(dbName); const comandes = await db.collection('comandes').find().toArray(); console.log(comandes); } finally { await client.close(); } } llegirComandes();
Exercicis Pràctics
-
Afegir un Camp de Valoració als Productes: Modifica la col·lecció de productes per incloure un camp de valoració (rating) i actualitza els mètodes de creació i lectura per gestionar aquest nou camp.
-
Autenticació d'Usuaris: Implementa un sistema d'autenticació bàsic per als usuaris, incloent la verificació de la contrasenya en el moment de l'inici de sessió.
-
Actualitzar l'Estat de les Comandes: Crea una funció per actualitzar l'estat d'una comanda (per exemple, de "pendent" a "enviat").
Conclusió
En aquest tema, hem après a construir una aplicació de comerç electrònic bàsica utilitzant MongoDB. Hem vist com estructurar les dades, gestionar productes, usuaris i comandes, i hem practicat amb exercicis per reforçar els conceptes apresos. Amb aquests coneixements, estàs preparat per desenvolupar aplicacions més complexes i personalitzades segons les teves necessitats.
Curs de MongoDB
Mòdul 1: Introducció a MongoDB
Mòdul 2: Operacions CRUD a MongoDB
Mòdul 3: Modelatge de Dades a MongoDB
Mòdul 4: Indexació i Agregació
Mòdul 5: Funcions Avançades de MongoDB
Mòdul 6: Rendiment i Seguretat
- Optimització del Rendiment
- Còpia de Seguretat i Restauració
- Millors Pràctiques de Seguretat
- Monitorització i Alertes