Especificación de los parámetros de Mongo Query desde el controlador del cliente (MEAN.JS)
Estoy creando una aplicación usando MongoDB, Angular, Express y Node (MEAN stack).
Usé el generador MEAN.JS para andamiar mi aplicación.
Usaré el módulo de artículos como referencia.
Supongamos que tengo 7000 registros en mi colección de artículos, y cada registro tiene una fecha asociada. Es ineficiente cargar todos los 7000 registros en la memoria cada vez que cargo la página para ver los registros en una tabla y estoy viendo terribles pérdidas de rendimiento debido a eso. Por esta razón, solo me gustaría cargar registros con una fecha en el rango de (Hace 1 mes) a (1 año a partir de ahora) y mostrarlos en la tabla. Actualmente puedo hacer esto con lo siguiente:
En mis artículos.client.controller.js:
$scope.find = function() {
$articles = Articles.query();
};
... y en mis artículos.server.controller.js:
var now = new Date();
var aYearFromNow = new Date(now.getTime() + 86400000*365); //add a year
var aMonthAgo = new Date(now.getTime() - 86400000*30); //subtract roughly a month
exports.list = function(req, res) { Article.find().where('date').lt(aYearFromNow).gt(aMonthAgo).sort('-created').populate('user', 'displayName').exec(function(err, articles) {
if (err) {
return res.send(400, {
message: getErrorMessage(err)
});
} else {
res.jsonp(articles);
}
});
};
El problema es que esta no es una forma dinámica de hacer las cosas. En otras palabras, quiero que el usuario pueda especificar qué tan atrás y qué tan lejos quiere ver.
¿Cómo puedo vincularme a variables (por ejemplo, 'aYearFromNow' y 'aMonthAgo') en mi vista de cliente que cambiarán los parámetros de consulta en el controlador de mi servidor?