Mongoose es un ODM para Nodejs que nos permite escribir consultas para una base de datos de MongooDB.
De MongoDB, descargue e instale:
Crea un nuevo proyecto, según Express - Bases.
hito1-api2
En Mockaroo, acceda al schema log_visitas y descargue el log_visitas.json. (Backup: Descargue el archivo de log_visitas.json)
log_visitas.json
en la colección log_visitas.
Desde la línea de comandos, en la raíz de la carpeta del proyecto.
npm i -g mongoosejs-cli
npm install --save mongoose
npx mongoosejs-cli init
config/config.json
contiene la configuración para la conexión con la base de datos no relacional.models
contendrá las clases correspondientes a las entidades de la base de datos no relacional.migrations
contendrá los scripts a ejecutar en la base de datos no relacional y en la aplicación. Estos scripts actúan como registros históricos de los cambios.seeders
contendrá los scripts para generar datos para las entidades de la base datos no relacional.
config/config.json
con la URI para la conexión con el motor de bases de datos no relacional. En este caso, el ambiente a utilizar es development.
{
"development": {
"database": {
"url": "mongodb://localhost:27017/album",
...
}
},
...
El modelo es una representación abstracta, mediante clases (atributos y métodos), de las entidades de la base de datos no relacional.
Desde la línea de comandos, en la raíz de la carpeta del proyecto.
Cree el modelo: log_visitas
, con:
npx mongoosejs-cli model:create --name log_visitas --attributes usuario:String,genero:String,ciudad:String,ipv4:String,fecha_acceso:Date,tiempo_navegacion_seg:Number,foto:Array
En la carpeta models
se agregó la clase log_visitas.js, con la configuración predeterminada para la clase log_visitas con los atributos especificados.
Para solicitar los datos desde la base de datos, será necesario que:
var express = require('express');
var router = express.Router();
const models = require('../models').default;
module.exports = router;
"/findAll/json"
. El cual responde un json con todos los documentos (findAll) que se encuentran en la colección.
...
router.get('/findAll/json', function(req, res, next) {
models.log_visitas.find( (err, response) => {
if (err) {
return res.status(500).json({
message: 'Error when getting log_visitas.',
error: err
});
}
return res.json(response);
});
});
module.exports = router;
"/findById/:_id/json"
. El cual responde un json con el documento (findOne) que se encuentra en la colección, dado el identificador (_id
).
...
router.get('/findById/:_id/json', function(req, res, next) {
var _id = req.params._id;
models.log_visitas.findOne({_id: _id}, function (err, response) {
if (err) {
return res.status(500).json({
message: 'Error when getting log_visitas.',
error: err
});
}
if (!response) {
return res.status(404).json({
message: 'No such log_visitas'
});
}
return res.json(response);
});
});
module.exports = router;
...
var logVisitasRouter = require('./routes/log_visitas');
...
...
app.use('/log_visitas', logVisitasRouter);
...
http://localhost:3000/log_visitas/findAll/json
_id
del documento, por ejemplo con el URL http://localhost:3000/log_visitas/findById/63a8de19f230e068eadcec17/json