我有一个连接到MongoDB的NodeJS应用程序。我在前端使用AngularJS。 NodeJS应用程序包含我的所有GET,POST,DELETE API。我有一个GET请求,返回我的"学院"作为JSON响应完全收集。这个集合有7771个文档,我只返回ID和Name作为JSON响应。
当我在我的开发环境中本地运行我的应用程序时,它运行良好,我的GET的响应是7771元素作为JSON。当我上传我的应用程序并上线时,我看到我的GET的回复正好是1000.
我是在digitalocean Droplet上托管这个。 DigitalOcean是否限制API响应?或者由于版本不同,它是我的NodeJS或Mongod中的配置?
我认为这与我的Droplet中的NodeJS和MongoDB版本比我的本地有关,但是在我卸载并清理生产中的NodeJS和MongoDB之前(仍处于测试阶段)这意味着应用程序停机,我想要一些建议。
生产MongoDB版本:
app@dev:/etc$ mongod --version
db version v2.4.9
Thu Oct 8 15:03:50.491 git version: nogitversion
app@dev:/etc$ mongo --version
MongoDB shell version: 2.4.9
生产NodeJS版本:
app@dev:/etc$ nodejs --version
v0.10.25
本地MongoDB版本:
C:\>mongo --version
MongoDB shell version: 3.0.6
C:\>mongod --version
db version v3.0.6
git version: 1ef45a23a4c5e3480ac919b28afcba3c615488f2
本地NodeJS版本:
C:\>node --version
v4.0.0
这是我的NodeJS服务的API代码:
exports.listCollegesTypeahead = function(req, res) {
db.collection('colleges', function(err, collection) {
collection.find({}, {
name: 1
}).sort({
name: 1
}).toArray(function(err, items) {
res.send(items);
});
}); };
此代码返回本地框中的所有文档(7771)。在生产中,只返回1000份文件。
P.S:我正在端口3000上侦听NodeJS,并在端口80上重定向。我的GET请求是通过AJAX到" / ="可能会进入80端口,不确定是否会产生影响。
重新路由完成: sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
答案 0 :(得分:0)
结果证明这是我的生产Droplet的部署问题。 Droplet正在运行来自数字海洋中托管的ubtuntu存储库的nodejs和mongodb。限制可能来自运行旧版本。
在我的生产服务器上更新到NodeJS v4.0.0和MongoDB v3.0.6之后,我能够看到我的GET请求现在按预期返回7771条记录。
做了一个apt-get删除和清除" mongodb"和" nodejs",我运行以下内容来安装NodeJS v4.1.2:
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
在此之后,我按照本指南安装mongodb 3.0.6 http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/