MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

NodeJS + Mongoose-Timeout bei Verbindung

Ich habe dieses Problem gelöst, indem ich in jedem Router, in dem ich DB verwende, einen zusätzlichen Schritt hinzugefügt habe.

Es ist ein bisschen chaotisch, aber es funktioniert und 100 % keine Lecks.

Etwa so:

// file: 'routes/api/v0/users.js'
router
var User = require('../../../models/user').User,
    rest = require('../../../controllers/api/v0/rest')(User),
    checkDB = require('../../../middleware/checkDB');

module.exports = function (app) {
  app.get('/api/v0/users', checkDB, rest.get);
  app.get('/api/v0/users/:id', checkDB, rest.getById);
  app.post('/api/v0/users', checkDB, rest.post);
  app.delete('/api/v0/users', checkDB, rest.deleteById);
  app.put('/api/v0/users', checkDB, rest.putById);
};

// file: 'middleware/checkDB.js'
var HttpError = require('../error').HttpError,
    mongoose = require('../lib/mongoose');

// method which checks is DB ready for work or not
module.exports = function(req, res, next) {
  if (mongoose.connection.readyState !== 1) {
    return next(new HttpError(500, "DataBase disconnected"));
  }
  next();
};

PS Wenn Sie eine bessere Lösung kennen, lassen Sie es mich bitte wissen.