Как только вы закончите, закройте соединение мангуста должным образом.

Я использую мангуст в скрипте, который не предназначен для непрерывной работы, и я столкнулся с очень простой проблемой, но я не могу найти ответ; Проще говоря, как только я вызываю любую функцию мангуста, которая отправляет запросы на mongodb, мой экземпляр nodejs никогда не останавливается, и мне нужно убить его вручную, скажем, Ctrl + c или Program.exit ().

Код выглядит примерно так:

var mongoose = require('mongoose');

// if my program ends after this line, it shuts down as expected, my guess is that the connection is not really done here but only on the first real request ?
mongoose.connect('mongodb://localhost:27017/somedb'); 

// define some models

// if I include this line for example, node never stop afterwards
var MyModel =  mongoose.model('MyModel', MySchema);

Я попытался добавить вызовы к mongoose.disconnect (), но безрезультатно. В остальном все работает нормально (поиск, сохранение, ...).

Это та же проблема, что и у этого человека, к сожалению, он не получил никакого ответа: https://groups.google.com/group/mongoose-orm/browse_thread/thread/c72cc1c51c76e661

Спасибо

​​РЕДАКТИРОВАТЬ: принял ответ ниже, так как он технически правильный, но если кто-то снова столкнется с этой проблемой, кажется, что mongoose и / или драйвер mongodb на самом деле не закрывают соединение, когда вы его спрашиваете, есть ли еще выполняющиеся запросы .

Он даже не запоминает вызов отключения, он не делает его после завершения выполнения запросов; он просто отклоняет ваш вызов без исключения или чего-либо в этом роде и никогда не закрывает соединение.

Итак, вот и все: убедитесь, что каждый запрос был обработан, прежде чем вызывать метод disconnect (), если вы хотите, чтобы он действительно работал.

128
задан Lepidosteus 19 December 2012 в 21:00
поделиться