From ffb6bb72a3b4b7678ac0a340bb57fadf5c5fa5ac Mon Sep 17 00:00:00 2001 From: Alberto Basalo Date: Mon, 30 Nov 2015 18:11:32 +0100 Subject: [PATCH] Mongo client commented --- .../client/app/states/_abstate/abstate.html | 3 - .../client/app/states/_abstate/abstate.js | 56 -------------- 23-mongodb-client/movimientosData.js | 76 +++++++++++-------- 23-mongodb-client/server.js | 57 ++++++-------- 4 files changed, 67 insertions(+), 125 deletions(-) delete mode 100644 23-mongodb-client/client/app/states/_abstate/abstate.html delete mode 100644 23-mongodb-client/client/app/states/_abstate/abstate.js diff --git a/23-mongodb-client/client/app/states/_abstate/abstate.html b/23-mongodb-client/client/app/states/_abstate/abstate.html deleted file mode 100644 index c4db0d3..0000000 --- a/23-mongodb-client/client/app/states/_abstate/abstate.html +++ /dev/null @@ -1,3 +0,0 @@ -
- {{ state.title }} -
diff --git a/23-mongodb-client/client/app/states/_abstate/abstate.js b/23-mongodb-client/client/app/states/_abstate/abstate.js deleted file mode 100644 index 80934f4..0000000 --- a/23-mongodb-client/client/app/states/_abstate/abstate.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -(function () { - var componentName = "state"; - angular - .module(componentName, ['ui.router', 'ngResource']) - .config(stateConfig) - .directive(componentName, directive) - .service("servicio_"+componentName, service) - - function stateConfig($stateProvider) { - $stateProvider - .state(componentName, { - url: '/' + componentName, - template: '<' + componentName + '>' - }); - } - - function directive() { - return { - templateUrl: 'app/states/' + componentName + '/' + componentName + '.html', - controller: controller, - controllerAs: componentName, - bindToController: true, - scope: {} - } - } - - function controller(servicio_state) { - var vm = this; - vm.title = "Mi Estado"; - vm.dato = servicio_state.Recurso; - } - - function service($resource) { - var url = '/api/' + componentName + 's/:id' - this.Recurso = $resource( - url, - { - id: '@_id' - }, - { - 'update': - { - method: 'PUT' - } - }); - } -})(); - - - - - - - - diff --git a/23-mongodb-client/movimientosData.js b/23-mongodb-client/movimientosData.js index ed9d1b9..8bb4c0f 100644 --- a/23-mongodb-client/movimientosData.js +++ b/23-mongodb-client/movimientosData.js @@ -1,62 +1,65 @@ +// Módulo de acceso a datos de movimientos var mongodb = require('mongodb'); var MongoClient = mongodb.MongoClient; -var ObjectID = mongodb.ObjectID; +var ObjectID = mongodb.ObjectID; // para tratar los identificadores autogenerados var mongoUrl = "mongodb://localhost:27017/control_caja"; var collection = "movimientos"; module.exports.gettingMovimientos = function (usuario, cb) { MongoClient.connect(mongoUrl, function (err, db) { - if (err) { - cb(err, null); - } else { + if (err) { + cb(err, null); + } else { db.collection(collection).find({ usuario: usuario }).toArray(cb); - } - }); + } + }); } module.exports.gettingMovimiento = function (movId, usuario, cb) { MongoClient.connect(mongoUrl, function (err, db) { - if (err) { - cb(err, null); - } else { + if (err) { + cb(err, null); + } else { + // el _id no es un string, hay que trasnformarlo db.collection(collection).find({ - _id: new ObjectID(movId) , + _id: new ObjectID(movId), usuario: usuario }).toArray(cb); - } - }); + } + }); } module.exports.postingMovimiento = function (movimiento, cb) { MongoClient.connect(mongoUrl, function (err, db) { - if (err) { - cb(err, null); - } else { + if (err) { + cb(err, null); + } else { db.collection(collection).insert(movimiento, cb); - } - }); + } + }); } module.exports.puttingMovimiento = function (movimiento, cb) { MongoClient.connect(mongoUrl, function (err, db) { - if (err) { - cb(err, null); - } else { + if (err) { + cb(err, null); + } else { + // atención al cambio de tipo en el _id movimiento._id = new ObjectID(movimiento._id); db.collection(collection).replaceOne({ _id: movimiento._id, usuario: movimiento.usuario - },movimiento, cb); - } - }); + }, movimiento, cb); + } + }); } module.exports.gettingTotalUsuario = function (usuario, cb) { - - var query= [ + // Las consultas más complejas se resuelven con el framework de agregación + var query = [ { $match: { usuario: usuario @@ -73,12 +76,23 @@ module.exports.gettingTotalUsuario = function (usuario, cb) { } } ]; - MongoClient.connect(mongoUrl, function (err, db) { - if (err) { - cb(err, null); - } else { + if (err) { + cb(err, null); + } else { db.collection(collection).aggregate(query).toArray(cb); - } - }); + } + }); +} + +// To Do: extraer lógica común a funciones reutilizables + +module.exports.doingSomethingMovimiento = function (movimiento, cb) { + MongoClient.connect(mongoUrl, function (err, db) { + if (err) { + cb(err, null); + } else { + db.collection(collection).doSomething(movimiento, cb); + } + }); } diff --git a/23-mongodb-client/server.js b/23-mongodb-client/server.js index a544bdf..13cccc4 100644 --- a/23-mongodb-client/server.js +++ b/23-mongodb-client/server.js @@ -5,7 +5,9 @@ var app = express(); app.use(bodyParser()); app.use(express.static(__dirname + '/client')); +// Modularidad en NodeJS mediante require/export var movimientosData = require('./movimientosData.js'); +// To Do: un módulo para el API demovimientos y otro para seguridad console.log('ready'); @@ -39,11 +41,6 @@ app.use('/api/priv/', function (req, res, next) { // API - REST // SECURITY app.route('/api/usuarios') - .get(function (req, res, next) { - // Esto devuelve la lista completa de usuarios y contraseñas - // PELIGRO: Usar sólo a modo de debug mientras desarrollamos - res.json(usuarios); - }) .post(function (req, res, next) { var usuario = req.body; if (existeUsuario(usuario)) { @@ -58,11 +55,6 @@ app.route('/api/usuarios') // Gestión de sesiones: listado y login app.route('/api/sesiones') - .get(function (req, res, next) { - // Esto devuelve la lista completa de sesiones - // PELIGRO: Usar sólo a modo de debug mientras desarrollamos - res.json(sesiones); - }) .post(function (req, res, next) { var usuario = req.body; if (esUsuarioValido(usuario)) { @@ -119,11 +111,10 @@ app.get('/api/pub/maestros', function (req, res, next) { app.route('/api/priv/movimientos') .get(function (req, res, next) { - movimientosData.gettingMovimientos(req.usuario, function(err, result){ - if(err){ - res.status(500).send(err); - } - else{ + movimientosData.gettingMovimientos(req.usuario, function (err, result) { + if (err) { + res.status(500).send(err); + } else { res.json(result); } }) @@ -131,11 +122,10 @@ app.route('/api/priv/movimientos') .post(function (req, res, next) { var movimiento = req.body; movimiento.usuario = req.usuario; - movimientosData.postingMovimiento(movimiento,function(err, result){ - if(err){ - res.status(500).send(err); - } - else{ + movimientosData.postingMovimiento(movimiento, function (err, result) { + if (err) { + res.status(500).send(err); + } else { res.json(movimiento); } }) @@ -145,33 +135,30 @@ app.route('/api/priv/movimientos') app.route('/api/priv/movimientos/:id') .get(function (req, res, next) { var movId = req.params.id; - movimientosData.gettingMovimiento(movId,req.usuario, function(err, result){ - if(err){ - res.status(500).send(err); - } - else{ + movimientosData.gettingMovimiento(movId, req.usuario, function (err, result) { + if (err) { + res.status(500).send(err); + } else { res.json(result[0]); } }) }).post(function (req, res, next) { var movId = req.params.id; var nuevoMovimiento = req.body; - movimientosData.puttingMovimiento(nuevoMovimiento,function(err, result){ - if(err){ - res.status(500).send(err); - } - else{ + movimientosData.puttingMovimiento(nuevoMovimiento, function (err, result) { + if (err) { + res.status(500).send(err); + } else { res.json(nuevoMovimiento); } }) }); app.get('/api/priv/total', function (req, res, next) { - movimientosData.gettingTotalUsuario(req.usuario, function(err, result){ - if(err){ - res.status(500).send(err); - } - else{ + movimientosData.gettingTotalUsuario(req.usuario, function (err, result) { + if (err) { + res.status(500).send(err); + } else { res.json(result); } })