2013-10-25 13 views
28

Expressアプリケーションを読み込むいくつかのテスト、つまりSupertestがあります。このアプリはMongoose接続を作成します。私はテストの中からその接続の状態をチェックする方法を知りたいです。 test.js app.js接続にアクセスする方法新しい接続を作成せずにマングース接続の状態を確認してください

console.log(mongoose.connection.readyState); 

でapp.js

mongoose.connect(...) 

? test.jsで同じパラメータを使用して接続すると、新しい接続が作成されるか、既存の接続が検索されますか?

+1

は、互いに独立して動作して、両方のスクリプトですかtest.jsですapp.jsに必要ですか? – Bernhard

+0

@Bernhard test.jsにはapp.jsが必要です - 私はvar app = exports.app = express()を実行し、テストでは私はrequire( '../ app.js')しますapp – cyberwombat

答えて

58

マングースモジュールは、シングルトンオブジェクトをエクスポートしているので、あなたは、接続の状態を確認するようにtest.jsに接続する必要はありません。

// test.js 
require('./app.js'); // which executes 'mongoose.connect()' 

var mongoose = require('mongoose'); 
console.log(mongoose.connection.readyState); 
+29

出力 - 0 =接続されていない、 1 =接続中、 2 =接続中、 3 =接続解除[(soucre)](http://mongoosejs.com/docs/api.html#connection_Connection-readyState) 私の資格情報は無効です。 4、私は公式のドキュメントや他の場所で見つけることができません。 –

+5

@AshwaniAgarwalチェックアウト[このファイル](https://github.com/Automattic/mongoose/blob/4237515684bbab8401e579125f2a3b204765bd83/lib/connectionstate.js)。 – robertklep

+1

ベストソリューションすべてのリクエストで接続状態を確認しました。私はそれをミドルウェアに入れて、DB接続エラーをクライアントに伝播させました。 – Tdy