8

データベースの作業が終了した後、マングース接続を切断しようとしましたが、機能しなかったようです

var mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/myDatabase'); 

var MyModel =  mongoose.model('MyModel', MySchema);

//do something here

mongoose.disconnect();

初回はすべて正常に動作しますが、コードを2回実行すると、「閉じられていない接続を開こうとしています」というエラーが表示されます。また、mongoose.connection.close();を試しました。同じ結果が得られました。

誰かがこれを手伝ってくれませんか?

どうもありがとうございます!

ゲイリー

私はこれを理解したと思います。

私のコードでは、データベースを使用してモデルで何かをしようとしていました。

var mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/myDatabase'); 

var MyModel =  mongoose.model('MyModel', MySchema);

MyModel.findOne({}, function () {...});

mongoose.disconnect();

問題がわかりますか?Nodejsの非ブロッキング機能により、「findOne」が完了する前に「disconnect」が実行されたため、もちろん機能しませんでした。

解決策は、切断をコールバック関数に入れることです。

MyModel.findOne({}, function () {
...
mongoose.disconnect();
});
4

2 に答える 2

6

このようにしてみてください:

var db = mongoose.connect('mongodb://localhost:27017/myDatabase'); 
MyModel.findOne({}, function () {
    // todo
    db.disconnect();
});
于 2013-11-27T02:46:29.050 に答える
3
var db = mongoose.createConnection('mongodb://localhost:27017/myDatabase'); 

MyModel.findOne({}, function () {

     // Processing to be done

     db.close();
});
于 2014-04-19T14:13:12.233 に答える