我正在使用 MongoDB、Angular、Express 和 Node(MEAN 堆栈)构建一个应用程序。
我使用 MEAN.JS 生成器来构建我的应用程序。
我将使用文章模块作为参考。
假设我的文章集合中有 7000 条记录,并且每条记录都有一个与其关联的日期。每次加载页面以查看表中的记录时,将所有 7000 条记录加载到内存中的效率很低,而且我发现因此造成了严重的性能损失。因此,我只想加载日期在(1 个月前)到(1 年后)范围内的记录并将其显示在表中。我目前可以通过以下方式做到这一点:
在我的articles.client.controller.js中:
$scope.find = function() {
$articles = Articles.query();
};
...在我的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);
}
});
};
问题是这不是一种动态的做事方式。换句话说,我希望用户能够指定他们想要查看多远和多远的内容。
如何在客户端视图中绑定到变量(例如“aYearFromNow”和“aMonthAgo”)以更改服务器控制器中的查询参数?