Conectar a MongoDb
Para conectar una aplicación de Node.js a MongoDB, puedes usar el paquete mongoose
, que facilita la interacción con MongoDB mediante una interfaz sencilla y orientada a objetos.
1. Crear un proyecto de Node.js
Si aún no tienes un proyecto de Node.js, crea uno yendo al directorio de tu proyecto y ejecutando:
mkdir nombre-de-tu-proyectocd nombre-de-tu-proyectonpm init -y
1. Instalar Mongoose
Mongoose es una biblioteca de Node.js para MongoDB que facilita la interacción con la base de datos. Puedes instalarlo con:
npm install mongoose
2. Configurar la Conexión a MongoDB
Explicación:
-
URI de conexión:
- Si estás usando MongoDB en tu máquina local, usa
mongodb://localhost:27017/nombre-de-tu-base-de-datos
. - Si usas MongoDB Atlas o un servidor remoto, la URI puede verse así:
mongodb+srv://usuario:password@cluster.mongodb.net/nombre-de-tu-base-de-datos?retryWrites=true&w=majority
.
Puedes pasar la dirección como una variable de entorno pero necesitas usar un string template.
- Si estás usando MongoDB en tu máquina local, usa
Ahora puedes usar mongoose
en el archivo principal de tu aplicación (por ejemplo, app.js
o server.js
).
Archivo app.js
:
const express = require('express');const mongoose = require('./db');
const app = express();
app.use(express.json());
app.get('/', (req, res) => { res.send('¡La conexión a MongoDB está funcionando!');});
mongoose .connect('mongodb+srv://usuario:password@cluster.mongodb.net/nombre-de-tu-base-de-datos?retryWrites=true&w=majority') .then(() => { app.listen(process.env.PORT); }) .catch(err => { console.log(err); });
3. Crear un Modelo de Ejemplo
Los modelos en Mongoose son representaciones de los documentos de MongoDB. Por ejemplo, si quieres un modelo para almacenar usuarios:
Archivo models/User.js
:
const mongoose = require('mongoose');const uniqueValidator = require('mongoose-unique-validator');
const userSchema = new Schema({ username: { type: String, required: false }, groupId: { type: mongoose.Schema.Types.ObjectId, required: false , ref: 'UserGroup', default: '64be2e7090b134d92ec1b68a'}, email: { type: String, required: true, unique: true }, dateOfBirth: { type: Date, required: false, default: '' }, mailing_addresses: [{ name: { type: String, required: false }, address: { type: String, required: false }, }],});
userSchema.plugin(uniqueValidator);userSchema.set('timestamps', true);
const User = mongoose.model('User', userSchema);
module.exports = User;