2013-10-25 28 views
28

Tôi có một số kiểm tra - cụ thể là Supertest - tải ứng dụng Express của tôi. Ứng dụng này tạo kết nối Mongoose. Tôi muốn biết cách kiểm tra trạng thái của kết nối đó từ trong thử nghiệm của tôi.Kiểm tra trạng thái kết nối mongoose mà không cần tạo kết nối mới

Trong app.js

mongoose.connect(...) 

Trong test.js

console.log(mongoose.connection.readyState); 

Làm thế nào để truy cập kết nối app.js? Nếu tôi kết nối bằng cách sử dụng các thông số tương tự trong test.js thì sẽ tạo một kết nối mới hoặc tìm kiếm một kết nối hiện có?

+1

đều kịch bản chạy độc lập với nhau hoặc là test.js được yêu cầu bởi app.js? – Bernhard

+0

@Bernhard test.js yêu cầu app.js - trong app.js tôi làm var app = exports.app = express() và trong test tôi yêu cầu ('../ app.js'). App – cyberwombat

Trả lời

58

Kể từ khi mô-đun cầy mangut xuất khẩu một đối tượng singleton, bạn không cần phải kết nối trong test.js của bạn để kiểm tra trạng thái của kết nối:

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

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

Output - 0 = bị ngắt kết nối, 1 = được kết nối, 2 = kết nối, 3 = ngắt kết nối [(soucre)] (http://mongoosejs.com/docs/api.html#connection_Connection-readyState) Thông tin đăng nhập của tôi không hợp lệ, nó đã cho 4, mà tôi không thể tìm thấy trong các tài liệu của cán bộ hay bất cứ nơi nào khác. –

+5

@AshwaniAgarwal xem [tệp này] (https://github.com/Automattic/mongoose/blob/4237515684bbab8401e579125f2a3b204765bd83/lib/connectionstate.js). – robertklep

+1

Các giải pháp tốt nhất mà tôi tìm thấy để kiểm tra trạng thái kết nối theo mọi yêu cầu. Tôi đã đặt nó trong một phần mềm trung gian để truyền các lỗi kết nối DB tới máy khách – Tdy

Các vấn đề liên quan