Especificando parâmetros de consulta do Mongo no Client Controller (MEAN.JS)
Estou criando um aplicativo usando MongoDB, Angular, Express e Node (pilha MEAN).
Eu usei o gerador MEAN.JS para montar meu aplicativo.
Vou usar o módulo de artigos como referência.
Suponha que eu tenha 7000 registros em minha coleção de artigos e que cada registro tenha uma data associada a ele. É ineficiente carregar todos os 7000 registros na memória toda vez que eu carrego a página para exibir os registros em uma tabela e vejo perdas terríveis de desempenho por causa disso. Por esse motivo, eu gostaria apenas de carregar registros com uma data no intervalo de (1 mês atrás) a (1 ano a partir de agora) e exibi-los na tabela. Atualmente, posso fazer isso com o seguinte:
Nos meus articles.client.controller.js:
$scope.find = function() {
$articles = Articles.query();
};
... e nos meus articles.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);
}
});
};
O problema é que essa não é uma maneira dinâmica de fazer as coisas. Em outras palavras, quero que o usuário possa especificar a que distância e quanto tempo deseja ver.
Como vincular a variáveis (por exemplo, 'aYearFromNow' e 'aMonthAgo') na visão do meu cliente que alteram os parâmetros de consulta no controlador do servidor?