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

Node.jsを使用してMongoDBに接続するための最良の方法

    グローバル変数を使用できます 接続を保持します(例:db )、例:

    var db = null // global variable to hold the connection
    
    MongoClient.connect('mongodb://localhost:27017/', function(err, client) {
        if(err) { console.error(err) }
        db = client.db('test') // once connected, assign the connection to the global variable
    })
    
    app.get('/', function(req, res) {
        db.collection('test').find({}).toArray(function(err, docs) {
            if(err) { console.error(err) }
            res.send(JSON.stringify(docs))
        })
    })
    

    または、必要に応じて、Promiseオブジェクトを使用することもできます。 MongoClientによって返されます コールバック引数なしで呼び出された場合:

    var conn = MongoClient.connect('mongodb://localhost:27017/') // returns a Promise
    
    app.get('/', function(req, res) {
        conn.then(client=> client.db('test').collection('test').find({}).toArray(function(err, docs) {
            if(err) { console.error(err) }
            res.send(JSON.stringify(docs))
        }))
    })
    

    2番目の例ではES6ファットアロー関数の定義を使用したことに注意してください。

    MongoClientを呼び出さないでください。 毎回。グローバル変数またはPromisesを使用すると、MongoDB node.jsドライバーが接続プールを作成できるようになります。これにより、少なくとも2つの優れた点が実現されます。

    • 接続はプールで再利用されるため、アプリケーションの存続期間中、複数の費用のかかるセットアップ/ティアダウンプロセスはありません。一度接続すれば、残りはドライバーに任せてください。
    • 接続プールのサイズを制限することで、アプリケーションがデータベースに接続する量を制御できます。

    2018年8月24日編集MongoClient.connect() node.jsドライバーバージョン3.0以降のメソッドは、データベースオブジェクトではなくクライアントオブジェクトを返します。上記の例は、最新のnode.jsドライバーバージョンで最新の状態に保つように変更されています。



    1. Redis、Node.js、Socket.io:クロスサーバー認証とnode.jsの理解

    2. OpenedXMongoDBデータベースをバックアップする方法

    3. GridFSで(Javaを使用して)更新操作を実行するにはどうすればよいですか?

    4. bluebirdを使用してnodejsですべてのプロミスが終了するのを待ちます