継続的に実行することを意図していないスクリプトでマングースを使用していますが、非常に単純な問題のように見えますが、答えを見つけることができません。mongodbにリクエストを送信する任意のmongoose関数を呼び出したら、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()を呼び出す前に、すべてのクエリが処理されていることを確認してください。