Ich verwende Mungo in einem Skript, das nicht kontinuierlich ausgeführt werden soll, und stehe vor einem scheinbar sehr einfachen Problem, kann jedoch keine Antwort finden. Einfach ausgedrückt, sobald ich eine Mungofunktion aufrufe, die Anforderungen an mongodb sendet, stoppt meine nodejs-Instanz nie und ich muss sie manuell beenden, z. B. mit Strg + c oder Program.exit ().
Der Code sieht ungefähr so aus:
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);
Ich habe versucht, Aufrufe zu mongoose.disconnect () hinzuzufügen, aber kein Ergebnis. Abgesehen davon funktioniert alles gut (finden, speichern, ...).
Dies ist genau das gleiche Problem wie bei dieser Person. Leider hat sie keine Antwort erhalten: https://groups.google.com/group/mongoose-orm/browse_thread/thread/c72cc1c51c76e661
Vielen Dank
BEARBEITEN: Akzeptierte die unten stehende Antwort, da sie technisch korrekt ist. Wenn jedoch jemand dieses Problem erneut auftritt, scheint es, dass Mungo und / oder der Mongodb-Treiber die Verbindung nicht tatsächlich schließen, wenn Sie danach fragen, ob noch Abfragen ausgeführt werden.
Es erinnert sich überhaupt nicht an den Verbindungsabbruch, es tut es nicht, sobald die Abfragen beendet sind. Es verwirft einfach Ihren Anruf ohne Ausnahme oder ähnliches und schließt die Verbindung nie wirklich.
Da haben Sie es also: Stellen Sie sicher, dass jede Abfrage verarbeitet wurde, bevor Sie separect () aufrufen, wenn Sie möchten, dass sie tatsächlich funktioniert.