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

  1. 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.

  2. 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ó.

  3. 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.

© Copyright 2024. Tots els drets reservats