Node.jsネイティブドライバとのMongoDB接続を閉じることができないようです。 node replica.js
を実行すると、スクリプトは終了しないため、何らかの理由で接続を閉じることができません。Node.jsとのMongoDB接続を閉じることができませんか?
ここにコードがあります。これは、レプリカセットだが、私はそれが問題だとは思わない:単一のmongodインスタンスへの接続
var mongodb = require('mongodb')
, Db = mongodb.Db
, Server = mongodb.Server
, ReplSet = mongodb.ReplSet;
// Replica set
var replSet = new ReplSet([
new Server('localhost', 27017), // Primary
new Server('localhost', 27018), // Secondary
new Server('localhost', 27016), // Secondary
],
{ rs_name: 'replica', read_secondary: true }
);
var db = new Db('test', replSet, { native_parser: true, w: 1 });
// Opening
db.open(function (err, db) {
if (err) console.error(err);
db.close();
});
がうまく動作しますが、接続が閉じ取得し、スクリプトが終了し、process.exit()
の(robertklepによって提案された)を必要とせず呼び出し:
var mongodb = require('mongodb')
, Db = mongodb.Db
, Server = mongodb.Server;
// Single instance
var server = new Server('localhost', 27017):
var db = new Db('test', server, { native_parser: true, w: 1 });
// Opening
db.open(function (err, db) {
if (err) console.error(err);
db.close();
});
なぜ私の2番目の例は強制なしで動作しますが、強制的にレプリカセットとの接続を閉じる必要がありますか? – gremo
@Gremoあなたはする必要はありませんが、予期しないことが起こっています。コールバックはエラーなく呼び出されますか? – JohnnyHK
エラーはまったくありません。 'close(true)'を使っても助けにはなりません。あなたのコードは "close complete"を表示し、スクリプトを終了することはありません。私は 'CTRL + C'で強制終了する必要があります。 – gremo