Sto usando la mangusta in uno script che non è pensato per essere eseguito continuamente, e sto affrontando quello che sembra essere un problema molto semplice, ma non riesco a trovare una risposta; semplicemente una volta che faccio una chiamata a qualsiasi funzione mongoose che invia richieste a mongodb la mia istanza nodejs non si ferma mai e devo ucciderla manualmente con, diciamo, Ctrl + c o Program.exit ().
Il codice è simile al seguente:
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);
Ho provato ad aggiungere chiamate a mongoose.disconnect () ma no per ottenere risultati. A parte questo, tutto funziona bene (trovare, salvare, ...).
Questo è esattamente lo stesso problema di questa persona, purtroppo non ha ricevuto alcuna risposta: https://groups.google.com/group/mongoose-orm/browse_thread/thread/c72cc1c51c76e661
Grazie
EDIT: ha accettato la risposta di seguito poiché è tecnicamente corretta, ma se qualcuno dovesse mai più risolvere questo problema, sembra che mongoose e / o il driver mongodb in realtà non chiudano la connessione quando lo si chiede se ci sono ancora query in esecuzione.
Non ricorda nemmeno la chiamata di disconnessione, non lo fa una volta terminata l'esecuzione delle query; ignora semplicemente la tua chiamata senza alcuna eccezione o qualcosa del genere e non chiude mai effettivamente la connessione.
Quindi il gioco è fatto: assicurati che ogni query sia stata elaborata prima di chiamare disconnect () se vuoi che funzioni davvero.