La Api prendas, es un proyecto para Visualizar,Crear, Actualizar y Eliminar fácilmente prendas, con unas caracteristicas como codigo, nombre, precio y categoria. Su clave primaria es el ID de MongoDB
// ejemplo de la estructura de Prendas
{
"codigo": 28,
"nombre": "Vestido de Punto ",
"precio": 300,
"categoria": "Outfit"
}
PETICION | URL | DESCRIPCION |
---|---|---|
GET | /prendas | Devuelve todos las prendas |
GET | /prendas/nombre | Devuelve todas las prendas cargados con el nombre solicitada |
POST | /prendas | Agregar una prenda |
PUT | /prendas/:id | Modificar una prenda a partir del ObjetID |
DELETE | /prendas/:id | Eliminar un producto pasandole el ObjetID |
Note
Este método va actualizar la prenda recibiendo el objetID y los campos del objeto a modificar en la base de datos, si se envia el _id en el json formado en el body la funcion lo elimina para que no haya conflicto al actualizar los datos.
// Endpoint PUT para modificar una prenda por su ID
app.put('/prendas/:id', async (req, res) => {
const idPrenda = req.params.id;
const prendaModificada = req.body;
if (!prendaModificada || Object.keys(prendaModificada).length === 0) {
return res.status(400).send('Error en el formato de los datos ingresados');
}
const client = await connectToMongodb();
if (!client) {
res.status(500).send('Error al conectarse a MongoDB')
return;
}
const db = client.db('Prendas');
const prendasCollection = db.collection('prendas');
try {
const result = await prendasCollection.updateOne(
{ _id: new ObjectId(idPrenda) }, // Crear una instancia de ObjectId
{ $set: prendaModificada }
);
if (result.matchedCount === 0) {
return res.status(404).send('Prenda no encontrada');
}
console.log(`Se modificó correctamente la prenda con ID ${idPrenda}`);
const mensaje = `Se modificó correctamente la prenda con ID ${idPrenda}`;
res.status(200).json({ descripcion: mensaje, objeto: prendaModificada });
} catch (err) {
console.error(err);
res.status(500).json({ descripcion: 'Error al actualizar la prenda', error: err });
} finally {
client.close();
}
});
Note
Este método elimina un producto mobiliario pasandole el ID en la base de datos
app.delete('/prendas/:id', async (req, res) => {
const idPrenda = req.params.id;
client = await connectToMongodb();
if (!client) {
res.status(500).send('Error al conectarse a MongoBD');
return;
};
const db = client.db('Prendas');
try {
const resultado = await db.collection('prendas').deleteOne({ _id: new ObjectId(idPrenda) });
if (resultado.deletedCount === 0) {
res.status(404).send('No se encontro una prenda con _id: ' + idPrenda);
} else {
res.status(204).end();
}
} catch (error) {
res.status(500).send('Error al eliminar la prenda, formato de id invalido');
} finally {
await disconnectFromMongodb();
}
});
PORT=3009
MONGODB_URLSTRING=mongodb+srv://admin:admin@cluster0.5dxhuuy.mongodb.net/?retryWrites=true&w=majority
graph TD
A[Inicio] --> B[Crear servidor Express]
B --> C[Agregar los require necesarios]
C --> D[Incluir las funciones deconectar y desconectar declaradas en src/mongodb.js]
D --> E[Definir endpoint GET /prendas]
D --> F[Definir endpoint PUT /prendas/:id]
D --> G[Definir endpoint GET /prendas/nombre/:nombre]
E --> I[Retornar todo el contenido]
F --> J[Aplicar filtro por Id de ObjetKey]
G --> K[Aplicar filtro por nombre de prenda]