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: 'joan@example.com',
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
