Check mongoose connection state without creating new connection

后端 未结 2 1418
离开以前
离开以前 2021-01-30 12:43

I have some tests - namely Supertest - that load my Express app. This app creates a Mongoose connection. I would like to know how to check the status of that connection from wit

相关标签:
2条回答
  • 2021-01-30 12:51

    I use this for my Express Server mongoDB status, where I use the express-healthcheck middleware

    // Define server status
    const mongoose = require('mongoose');
    const serverStatus = () => {
      return { 
         state: 'up', 
         dbState: mongoose.STATES[mongoose.connection.readyState] 
      }
    };
    //  Plug into middleware.
    api.use('/api/uptime', require('express-healthcheck')({
      healthy: serverStatus
    }));
    

    Gives this in a Postman request when the DB is connected.

    {
      "state": "up",
      "dbState": "connected"
    }
    

    Gives this response when the database was shutdown.

    {
    "state": "up",
    "dbState": "disconnected"
    }
    

    (The "up" in the responses represent my Express Server status)

    Easy to read (no numbers to interpret)

    0 讨论(0)
  • 2021-01-30 13:02

    Since the mongoose module exports a singleton object, you don't have to connect in your test.js to check the state of the connection:

    // test.js
    require('./app.js'); // which executes 'mongoose.connect()'
    
    var mongoose = require('mongoose');
    console.log(mongoose.connection.readyState);
    

    ready states being:

    • 0: disconnected
    • 1: connected
    • 2: connecting
    • 3: disconnecting
    0 讨论(0)
提交回复
热议问题