2013-10-25 77 views
28

我有一些测试 - 即Supertest - 加载我的快速应用程序。这个应用程序创建一个Mongoose连接。我想知道如何从我的测试中检查该连接的状态。检查猫鼬连接状态而不创建新的连接

在app.js

mongoose.connect(...) 

在test.js

console.log(mongoose.connection.readyState); 

如何访问app.js连接?如果我在test.js中使用相同的参数进行连接,将创建一个新的连接或寻找现有的连接?

+1

彼此独立运行两个脚本或者是test.js app.js需要吗? – Bernhard

+0

@Bernhard test.js需要app.js - 在app.js中我做var app = exports.app = express(),并且在测试中我需要('../ 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

我发现可以检查每个请求的连接状态的最佳解决方案。我已经把它放在一个中间件中传播数据库连接错误给客户端 – Tdy