gpt4 book ai didi

javascript - 从客户端 Controller (MEAN.JS) 指定 Mongo 查询参数

转载 作者:IT老高 更新时间:2023-10-28 13:20:32 27 4
gpt4 key购买 nike

我正在使用 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);
}
});
};

问题在于这不是一种动态的做事方式。换句话说,我希望用户能够指定他们希望看到多远和多远。

如何在客户端 View 中绑定(bind)变量(例如“aYearFromNow”和“aMonthAgo”)以更改服务器 Controller 中的查询参数?

最佳答案

另一种方法是只在查询方法中传递搜索参数,如下所示:

 $scope.searchart = function() {
Articles.query({start:$scope.startDate, end:$scope.endDate}, function(articles) {
$scope.articles = articles;
});
};

然后在服务器端 Controller ,读取您的查询字符串参数,如下所示:

exports.searcharticle = function(req, res) {
Article.find().where('date').gt(req.query['start']).lt(req.query['end']).exec(function(err, articles) {
if (err) {
res.render('error', {
status: 500
});
} else {
res.jsonp(articles);
}
});
};

这种方式不需要更多的路线或服务。

关于javascript - 从客户端 Controller (MEAN.JS) 指定 Mongo 查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24810712/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com