当超过100个结果时,Node.js + mongoosefind冻结节点

我有一个简单的mongoose模型,我打电话查找限制最大100它调用完成callback:

this.find({}).limit(100).exec(done); 

callback从来没有被称为如果我修改此行(或任何更高的数字)

 this.find({}).limit(101).exec(done); 

在任何地方都没有错误,数据库一直在工作,但是这个节点的应用程序冻结,必须重新启动。

如果我ssh到服务器连接到同一个数据库并连接到mongo shell,在同一个集合find({})返回所有约700集合在不到一秒钟。 当我将同一个数据库克隆到本地PC并运行应用程序以连接到本地数据库时,它可以正常工作,但是如果服务器连接到同一服务器上的数据库,则该应用程序在服务器上冻结。

任何想法如何debugging这一个?

编辑1:添加模型文件:

模型文件:

 'use strict'; let mongoose = require('mongoose'); let Schema = mongoose.Schema; let foodSchema = new Schema( { name: Object, type: String, description: Object, price: Number, priceBig: Number, active: Boolean }, { collection: 'foods' } ); let model = mongoose.model('food', foodSchema); model.getAllFoods = function (done) { this.find({}, done); }; model.getActiveFoods = function (done) { this.find({active: true}, done); }; model.getFoodById = function (id, done) { this.findOne({_id: id}, done); }; module.exports = model; 

用法:

 foodModel.getAllFoods(function (err, docs) { if (err) { res.sendStatus(500); return; } res.send(docs); }); 

getActiveFoods工作正常(返回96文档)

从JohnnyK的小费之后,我将Mongoose从4.1.11更新到了4.3.7,并解决了这个问题。