Używam mangusty w skrypcie, który nie powinien działać w sposób ciągły, i mam do czynienia z bardzo prostym problemem, ale nie mogę znaleźć odpowiedzi; po prostu mówiąc, kiedy wykonuję wywołanie dowolnej funkcji mongoose, która wysyła żądania do mongodb, moja instancja nodejs nigdy się nie zatrzymuje i muszę ją ręcznie zabić za pomocą, powiedzmy, Ctrl + c lub Program.exit ().
Kod wygląda mniej więcej tak:
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);
Próbowałem dodać wywołania do mongoose.disconnect (), ale nie otrzymałem wyniku. Poza tym wszystko działa dobrze (znajdowanie, zapisywanie, ...).
To jest dokładnie ten sam problem, co ta osoba, niestety nie otrzymał żadnej odpowiedzi: https://groups.google.com/group/mongoose-orm/browse_thread/thread/c72cc1c51c76e661
Dzięki
EDYCJA: zaakceptował poniższą odpowiedź, ponieważ jest technicznie poprawna, ale jeśli ktoś kiedykolwiek napotka ten problem ponownie, wydaje się, że mongoose i / lub sterownik mongodb w rzeczywistości nie zamykają połączenia, gdy pytasz, czy nadal są uruchomione zapytania.
W ogóle nie pamięta nawet połączenia rozłączającego, nie robi tego po zakończeniu wykonywania zapytań; po prostu odrzuca twoje wywołanie bez wyrzuconego wyjątku lub czegokolwiek w tym rodzaju i nigdy tak naprawdę nie zamyka połączenia.
Więc masz to: upewnij się, że każde zapytanie zostało przetworzone przed wywołaniem odłączenia (), jeśli chcesz, aby faktycznie działało.