Carpeta models
Se encargan de procesar las peticiones a servicios. Carpeta routes o controllers
Enrutador routes/mascotas.js
const express = require('express');
let Mascota = require(__dirname + '/../models/mascota.js');
let router = express.Router();
// Servicio de listado
router.get('/', (req, res) => {
...
});
// Servicio de inserción
router.post('/', (req, res) => {
...
});
// Servicio de borrado
router.delete('/:id', (req, res) => {
...
});
module.exports = router;
Enrutador routes/restaurantes.js
const express = require('express');
let Restaurante = require(__dirname + '/../models/restaurante.js');
let router = express.Router();
// Servicio de listado
router.get('/', (req, res) => {
...
});
// Servicio de inserción
router.post('/', (req, res) => {
...
});
// Servicio de borrado
router.delete('/:id', (req, res) => {
...
});
module.exports = router;
Enrutador routes/contactos.js
const express = require('express');
let Contacto = require(__dirname + '/../models/contacto.js');
let router = express.Router();
// Servicio de listado general
router.get('/', (req, res) => {
...
});
// Servicio de listado por id
router.get('/:id', (req, res) => {
...
});
// Servicio para insertar contactos
router.post('/', (req, res) => {
...
});
// Servicio para modificar contactos
router.put('/:id', (req, res) => {
...
});
// Servicio para borrar contactos
router.delete('/:id', (req, res) => {
...
});
module.exports = router;
Fichero index.js
// Librerías externas
const express = require('express');
const mongoose = require('mongoose');
// Enrutadores
const mascotas = require(__dirname + '/routes/mascotas');
const restaurantes = require(__dirname + '/routes/restaurantes');
const contactos = require(__dirname + '/routes/contactos');
// Conexión con la BD
mongoose.connect('mongodb://127.0.0.1:27017/contactos');
let app = express();
// Carga de middleware y enrutadores
// A cada enrutador se le indica una ruta base
app.use(express.json());
app.use('/mascotas', mascotas);
app.use('/restaurantes', restaurantes);
app.use('/contactos', contactos);
// Puesta en marcha del servidor
app.listen(8080);
/autores
, con operaciones GET, POST y DELETE Ejemplo: añadir una mascota a un contacto
app.put('/:id/mascotas', async (req, res) => {
try
{
// Buscar contacto por el id
let contacto = await Contacto.findById(req.params.id);
// Recogemos los datos de la mascota del cuerpo de la petición
let datosMascota = {
nombre: req.body.nombre,
tipo: req.body.tipo
};
contacto.mascotas.push(datosMascota);
let resultado = await contacto.save();
res.status(200).send({ok: true, resultado: resultado});
}
catch(error)
{
res.status(400).send({ok: false, error:"Error añadiendo mascota"});
}
});