Node.js + mongoose находит зависающий узел, когда результат более 100
У меня есть простая модель мангуста, по которой я вызываю find с пределом до 100, он вызывает готовый обратный вызов:
this.find({}).limit(100).exec(done);
Обратный вызов никогда не вызывается, если я изменяю эту строку в (или любое большее число)
this.find({}).limit(101).exec(done);
Нет ошибок, база данных продолжает работать, но приложение этого узла зависает и должно быть перезапущено.
Если я подключусь к серверу через ssh, чтобы подключиться к той же базе данных и подключиться к оболочке mongo, то в той же коллекции find ({}) вернет все ~ 700 коллекций менее чем за секунду. Когда я клонировал ту же базу данных на свой локальный ПК и запустил приложение для подключения к локальной базе данных, оно работало, но приложение зависало на сервере, если оно подключалось к базе данных на том же сервере.
Любая идея, как отладить этот?
Edit1: добавлен файл модели:
Файл модели:
'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 документов)