Я использую mongoose в сценарии, который не предназначен для непрерывной работы, и я столкнулся с очень простой проблемой, но я не могу найти ответа; Проще говоря, как только я вызываю любую функцию мангуста, которая отправляет запросы на 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 (), если вы хотите, чтобы он действительно работал.
Connection.close()
только экспортируется, только доступно, так что используйте его. 09.02.2018