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

NodeJsアプリケーションとモジュール間でMongodbへの接続を適切に再利用する方法

    mongoUtil.jsを作成できます mongoに接続し、mongo dbインスタンスを返す機能を備えたモジュール:

    const MongoClient = require( 'mongodb' ).MongoClient;
    const url = "mongodb://localhost:27017";
    
    var _db;
    
    module.exports = {
    
      connectToServer: function( callback ) {
        MongoClient.connect( url,  { useNewUrlParser: true }, function( err, client ) {
          _db  = client.db('test_db');
          return callback( err );
        } );
      },
    
      getDb: function() {
        return _db;
      }
    };
    

    これを使用するには、app.jsでこれを行います :

    var mongoUtil = require( 'mongoUtil' );
    
    mongoUtil.connectToServer( function( err, client ) {
      if (err) console.log(err);
      // start the rest of your app here
    } );
    

    そして、別の.jsのように、どこか別の場所でmongoにアクセスする必要がある場合 ファイル、あなたはこれを行うことができます:

    var mongoUtil = require( 'mongoUtil' );
    var db = mongoUtil.getDb();
    
    db.collection( 'users' ).find();
    

    これが機能する理由は、モジュールがrequireである場合、ノードで 'd、それらは一度だけロード/ソースされるので、_dbのインスタンスは1つだけになります。 およびmongoUtil.getDb() 常に同じインスタンスを返します。

    コードはテストされていないことに注意してください。



    1. ノードredis、変数はクライアント間で共有されますか?

    2. TornadoでRedis接続を処理する適切な方法は何ですか? (非同期-パブ/サブ)

    3. マングースがネストされたオブジェクトを保存しない

    4. PythonとMongoDBの使用開始