sql >> データベース >  >> NoSQL >> MongoDB

接続時のNodeJS+マングースタイムアウト

    DBを使用するルーターごとに1つのステップを追加することで、この問題に対処しました。

    少し面倒ですが、動作し、100%リークはありません。

    このようなもの:

    // 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解決策をもっとよく知っているなら、私に知らせてください。



    1. Meteor $ and with $ or

    2. 他のデータベース管理ツールにはない9つのClusterControl機能

    3. MongoDBの内部配列にデータを挿入します

    4. MongoDBDateTime形式