Я создаю приложение, используя MongoDB, Angular, Express и Node (стек MEAN).
Я использовал генератор MEAN.JS для создания каркаса своего приложения.
Я буду использовать модуль статей в качестве справки.
Предположим, у меня есть 7000 записей в моей коллекции статей, и каждая запись имеет связанную с ней дату. Неэффективно загружать все 7000 записей в память каждый раз, когда я загружаю страницу для просмотра записей в таблице, и из-за этого я наблюдаю ужасные потери производительности. По этой причине я хотел бы загружать только записи с датой в диапазоне от (1 месяц назад) до (1 год с настоящего момента) и отображать их в таблице. В настоящее время я могу сделать это со следующим:
В моих статьях.client.controller.js:
$scope.find = function() {
$articles = Articles.query();
};
...и в моих статьях.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);
}
});
};
Проблема в том, что это не динамичный способ ведения дел. Другими словами, я хочу, чтобы пользователь мог указать, как далеко назад и как далеко он хочет видеть.
Как я могу выполнить привязку к переменным (например, "aYearFromNow" и "aMonthAgo") в моем клиентском представлении, что изменит параметры запроса в контроллере моего сервера?