Check Mongoose Connection State Without Creating New Connection


Answer :

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

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)


As stated before "readyState" is good. "ping" is also good admin utility for doing so as well. It will return { ok: 1 } if it can accept commands.

const mongoose = require('mongoose')  // From where ever your making your connection const connection = await mongoose.createConnection(     CONNECT_URI,     CONNECT_OPTS )  async function connectionIsUp(): Promise<boolean> {     try {         const adminUtil = connection.db.admin()          const result = await adminUtil.ping()          console.log('result: ', result) // { ok: 1 }         return !!result?.ok === 1     } catch(err) {         return false     }     }  

Or if you you want it short.

async function connectionIsUp(): Promise<boolean> {     try {         return await connection.db.admin().ping().then(res => !!res?.ok === 1)     } catch (err) {         return false     } } 

Comments

Popular posts from this blog

Chemistry - Bond Angles In NH3 And NCl3

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Change The Font Size Of Visual Studio Solution Explorer