Uno de los conceptos fundamentales en el desarrollo de aplicaciones web es CRUD (Crear, Leer, Actualizar, Eliminar). Estos son los cuatro tipos básicos de funcionalidades que la mayoría de los sistemas web deben realizar en algún momento. En este capítulo, aprenderemos cómo implementar operaciones CRUD usando NodeJS y MongoDB, con especial atención en el manejo de errores.
Creando un CRUD con NodeJS y MongoDB
Para comenzar, necesitamos una instancia de MongoDB en ejecución y una aplicación NodeJS configurada. Supongamos que ya tenemos una colección de usuarios en nuestra base de datos MongoDB. Nuestro objetivo es crear rutas para agregar un nuevo usuario, leer usuarios existentes, actualizar un usuario y eliminar un usuario.
Creando un nuevo usuario (Crear)
Para crear un nuevo usuario, necesitamos una ruta POST. En NodeJS, esto se puede hacer usando el paquete express. Primero, importamos express y lo inicializamos. A continuación, definimos una ruta POST que acepta los datos del usuario como JSON en el cuerpo de la solicitud. Usamos el método insertOne de MongoDB para agregar el nuevo usuario a nuestra colección.
const expresar = requerir('expresar'); aplicación constante = expresar(); aplicación.use(express.json()); app.post('/usuarios', (req, res) => { const nuevoUsuario = req.body; db.collection('usuarios').insertOne(nuevoUsuario, (err, resultado) => { si (errar) { res.status(500).send({ error: 'Se produjo un error al crear el usuario' }); } demás { res.status(201).send(result.ops[0]); } }); });
Leer usuarios existentes (Leer)
Para leer usuarios existentes, necesitamos una ruta GET. Definimos esta ruta y utilizamos el método de búsqueda de MongoDB para obtener todos los usuarios de nuestra colección. El método toArray convierte el resultado en una matriz para facilitar su manejo.
app.get('/usuarios', (req, res) => { db.collection('usuarios').find({}).toArray((err, usuarios) => { si (errar) { res.status(500).send({ error: 'Se produjo un error al buscar usuarios' }); } demás { res.enviar(usuarios); } }); });
Actualizar un usuario (Actualizar)
Para actualizar un usuario, necesitamos una ruta PUT. Esta ruta debe incluir el ID de usuario que queremos actualizar. Usamos el método findOneAndUpdate de MongoDB para actualizar al usuario. Especificamos el ID de usuario como nuestro criterio de búsqueda y pasamos los datos del nuevo usuario.
app.put('/usuarios/:id', (req, res) => { const ID de usuario = req.params.id; const nuevoUserData = req.body; db.collection('usuarios').findOneAndUpdate({ _id: ObjectId(userId) }, { $set: newUserData }, (err, resultado) => { si (errar) { res.status(500).send({ error: 'Se produjo un error al actualizar el usuario' }); } demás { res.enviar(resultado.valor); } }); });
Eliminar un usuario (Eliminar)
Para eliminar un usuario, necesitamos una ruta DELETE. Esta ruta también debe incluir el ID de usuario que queremos eliminar. Usamos el método findOneAndDelete de MongoDB para eliminar al usuario.
app.delete('/usuarios/:id', (req, res) => { const ID de usuario = req.params.id; db.collection('usuarios').findOneAndDelete({ _id: ObjectId(userId) }, (err, resultado) => { si (errar) { res.status(500).send({ error: 'Se produjo un error al eliminar el usuario' }); } demás { res.enviar(resultado.valor); } }); });
Manejo de errores
El manejo de errores es una parte crucial del desarrollo de cualquier aplicación. En todas nuestras rutas, verificamos si ocurrió un error durante la operación de la base de datos. Si ocurre un error, respondemos con un estado HTTP 500 y un mensaje de error. Esto le permite al cliente saber que algo salió mal.
En un entorno de producción, también debería considerar registrar errores. Esto se puede hacer usando un paquete como winston o morgan. Estos paquetes le permiten registrar automáticamente informes de errores y otra información útil.
En resumen, CRUD es un concepto fundamental en el desarrollo de aplicaciones web. Con NodeJS y MongoDB, podemos implementar operaciones CRUD de manera eficiente y sencilla. El manejo de errores es una parte crucial de esto, ya que nos permite manejar situaciones inesperadas de una manera elegante.