Colecciones Nodejs y Mongodb utilizando MVC

 

En la entrada anterior ya habíamos hecho la conexión a Mongodb y se creo la base de datos. Aquí vamos a seguir mejorando estructura del backend , la idea es crear un pequeño blog donde el creador de este pueda ingresar contenido,modificarlo,eliminarlo y actualizarlo  y la persona que los vea pueda comentar y darle Like .

En la imagen siguiente  se muestra como es una base de datos MongoDB

Coleccion

Si no vio la entrada que explico un poco este tema aqui dejo el link MongoDB

Vamos a comenzar creando el patron de diseño MVC (modelo-vista-controlador) y comenzaremos con modelo.

Paso 1 Vamos a crear carpeta Models

Aquí es donde se van a crear las colecciones, por el momento se crearan entradas y comentarios 

La primera es entradas que la llamaremos entradas.js


// models/Entradas.js
const mongoose = require('mongoose');

const entradasSchema = new mongoose.Schema({
titulo: String,
contenido: String,
likes: Number,
});

module.exports = mongoose.model('Entradas', entradasSchema);


Se define el esquema o estructura donde el modelo se llama Entradas y tiene los campos
  • titulo tipo String
  • contenido tipo String
  • likes Tipo Number

La segunda es comentarios que la llamaremos comentarios.js

// models/Comentarios.js
const mongoose = require('mongoose');

const comentariosSchema = new mongoose.Schema({
entradaId: mongoose.Schema.Types.ObjectId,
autor: String,
contenido: String,
});

module.exports = mongoose.model('Comentarios', comentariosSchema);


Se define esquema o estructura donde el modelo se llama Comentarios y tiene los campos
  • articuloId Relación con Entradas
  • autor tipo String
  • contenido tipo String
Esta linea  entradaId: mongoose.Schema.Types.ObjectId  indica que hay una relación con la colección entradas por medio del Id de Entradas

Se puede observar crear una Colección es simple , por el momento la dejaremos asi , a medida que el proyecto vaya creciendo se mejorara.
     
Como se puede observar en los dos códigos se maneja se crea una constante mongoose y se exportan para ser manejados en el controlador

Paso 2 Adicionar cambios con git



Recuerden cuando aparece en verde y la U es porque se agrego código y se debe hacer commit , se realiza así:
  • git add .
  • git commit -m "se crea models comentarios y entradas"

Vamos a mejorar un poco el código , comenzamos con entradas.js


// models/Entradas.js
const mongoose = require('mongoose');

const entradaSchema = new mongoose.Schema({
titulo: {
type: String,
required: true
},
contenido: {
type: String,
required: true
},
likes: {
type: Number,
default: 0
}
});

module.exports = mongoose.model('Entrada', entradaSchema);

Donde titulo y contenido sean requeridos y likes por defecto 0

Ahora comentarios.js

// models/Comentarios.js
const mongoose = require('mongoose');

const comentariosSchema = new mongoose.Schema({
autor: {
type: String,
required: true
},
contenido: {
type: String,
required: true
},
entrada: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Entrada'
}
});

module.exports = mongoose.model('Comentarios', comentariosSchema);


Ya con estos cambios se actualiza models
  • git add .
  • git commit -m "se actualiza models"
Listo ya se ha actualizado el git , en la próxima entrada en vamos a comenzar con mas código donde vamos a crear los controladores. 

Comentarios