web-dev-qa-db-fra.com

Vérifier l'état de la connexion mangouste sans créer de nouvelle connexion

J'ai quelques tests - à savoir Supertest - qui chargent mon application Express. Cette application crée une connexion Mongoose. Je voudrais savoir comment vérifier l'état de cette connexion depuis mon test.

Dans app.js

mongoose.connect(...)

Dans test.js

console.log(mongoose.connection.readyState);

Comment accéder à la connexion app.js? Si je me connecte en utilisant les mêmes paramètres dans test.js, cela va-t-il créer une nouvelle connexion ou en rechercher une existante?

52
cyberwombat

Étant donné que le module mangouste exporte un objet singleton, vous n'avez pas à vous connecter dans votre test.js pour vérifier l'état de la connexion:

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

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

états prêts étant:

  • 0: déconnecté
  • 1: connecté
  • 2: connexion
  • 3: déconnexion
110
robertklep

J'utilise ceci pour mon état mongoDB Express Server, où j'utilise le middleware express-healthcheck

// 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
}));

Donne cela dans une demande Postman lorsque la base de données est connectée.

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

Donne cette réponse lorsque la base de données a été arrêtée.

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

(Le "up" dans les réponses représente mon état Express Server)

Facile à lire (pas de chiffres à interpréter)

0
englishPete