This commit is contained in:
Alberto Basalo 2015-11-30 18:11:32 +01:00
Родитель a55bd4fd9a
Коммит ffb6bb72a3
4 изменённых файлов: 67 добавлений и 125 удалений

Просмотреть файл

@ -1,3 +0,0 @@
<div>
{{ state.title }}
</div>

Просмотреть файл

@ -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 + '></' + 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'
}
});
}
})();

Просмотреть файл

@ -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);
}
});
}

Просмотреть файл

@ -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);
}
})