NodeJS或MongoDB 1000限制

时间:2015-10-08 20:52:50

标签: json node.js mongodb digital-ocean

我有一个连接到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

1 个答案:

答案 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/