Desplegando una REST API con Node.js y MongoDB en DigitalOcean App Platform
Introducción
Si estás buscando una forma sencilla de desplegar aplicaciones en la nube con bases de datos administradas, DigitalOcean App Platform es una excelente opción. En este tutorial, crearemos una REST API con Node.js desde cero, la desplegaremos en App Platform y conectaremos una base de datos MongoDB administrada por DigitalOcean usando Mongoose. Además, aprenderemos a conectarnos a la base de datos con MongoDB Compass.
💡 Por cierto, si es tu primera vez en DigitalOcean, puedes registrarte y obtener $200 gratis en créditos por 60 días 👉 Regístrate aquí
Configuración del Proyecto Node.js
Lo primero que haremos será crear un nuevo proyecto de Node.js con Express para nuestra REST API.
Para iniciar, crea una nueva carpeta para el proyecto y ejecuta los siguientes comandos en tu terminal:
mkdir digitalocean-api && cd digitalocean-api
npm init -y
Instala las dependencias necesarias:
npm install express mongoose dotenv cors
También instalaremos nodemon para facilitar el desarrollo:
npm install --save-dev nodemon
Crea un archivo server.js y agrega el siguiente código:
require('dotenv').config();
const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
const app = express();
const PORT = process.env.PORT || 5000;
app.use(cors());
app.use(express.json());
app.get('/', (req, res) => {
res.send('API funcionando correctamente');
});
app.listen(PORT, () => {
console.log(`Servidor corriendo en http://localhost:${PORT}`);
});
Edita tu package.json y reemplaza los scripts con lo siguiente:
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js"
}
Para probarlo, ejecuta:
npm run dev
Si ves Servidor corriendo en http://localhost:5000, ¡todo funciona correctamente! 🚀
Subiendo la REST API a DigitalOcean App Platform
Crea un repositorio en GitHub y sube tu código:
git init
git add .
git commit -m "First commit"
git branch -M main
git remote add origin <tu-repositorio-url>
git push -u origin main
Accede a DigitalOcean App Platform y crea una nueva aplicación. Conéctate a tu repositorio de GitHub y selecciona el proyecto. Configura Node.js como entorno de ejecución y define el siguiente comando para la ejecución:
npm install && npm start
Agrega la variable de entorno PORT=8080 en la configuración de DigitalOcean. Finaliza la configuración y despliega tu API. Una vez completado, obtendrás una URL pública para tu API. 🎉
Configurando MongoDB en DigitalOcean
Ve a Databases en DigitalOcean, selecciona MongoDB y elige una configuración básica. Una vez creada, copia la URI de conexión.
En el archivo .env, agrega:
MONGODB_URI=<tu-uri-de-mongodb>
Modifica server.js para conectarnos a MongoDB:
mongoose.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => console.log('Conectado a MongoDB'))
.catch(err => console.error('Error conectando a MongoDB', err));
Crea un archivo models/User.js:
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
name: String,
email: String,
});
module.exports = mongoose.model('User', UserSchema);
Añade rutas CRUD en server.js:
const User = require('./models/User');
app.post('/users', async (req, res) => {
const user = new User(req.body);
await user.save();
res.send(user);
});
app.get('/users', async (req, res) => {
const users = await User.find();
res.send(users);
});
Conectarse a MongoDB desde MongoDB Compass
Descarga MongoDB Compass, abre la aplicación y selecciona "Nueva Conexión". Pega la URI de tu base de datos de DigitalOcean y conéctate para visualizar los datos almacenados.
Desplegar la REST API con MongoDB
Sube los cambios al repositorio:
git add .
git commit -m "Add MongoDB connection"
git push origin main
DigitalOcean App Platform detectará los cambios y volverá a desplegar la API automáticamente. Prueba la API en producción:
curl -X POST <tu-api-url>/users -H "Content-Type: application/json" -d '{"name": "John", "email": "john@example.com"}'
Conclusión
Hemos creado una REST API con Node.js, la hemos desplegado en DigitalOcean App Platform y conectado con una base de datos MongoDB administrada. También aprendimos a utilizar MongoDB Compass para gestionar nuestros datos.
💡 Por cierto, si es tu primera vez en DigitalOcean, puedes registrarte y obtener $200 gratis en créditos por 60 días 👉 Regístrate aquí
¡Feliz codificación! 🚀