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