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

NodeJでMongodbのグローバル接続を処理するための最良の方法は何ですか

    Connectionを作成します アプリデータベース接続を管理するシングルトンモジュール。

    MongoClientはシングルトン接続プールを提供しないため、MongoClient.connect()を呼び出さないでください。 アプリで繰り返し。 mongoクライアントをラップするシングルトンクラスは、私が見たほとんどのアプリで機能します。

    const MongoClient = require('mongodb').MongoClient
    
    class Connection {
    
        static async open() {
            if (this.db) return this.db
            this.db = await MongoClient.connect(this.url, this.options)
            return this.db
        }
    
    }
    
    Connection.db = null
    Connection.url = 'mongodb://127.0.0.1:27017/test_db'
    Connection.options = {
        bufferMaxEntries:   0,
        reconnectTries:     5000,
        useNewUrlParser:    true,
        useUnifiedTopology: true,
    }
    
    module.exports = { Connection }
    

    どこでもrequire('./Connection')Connection.open() Connection.dbと同様に、メソッドが使用可能になります 初期化されている場合はプロパティ。

    const router = require('express').Router()
    const { Connection } = require('../lib/Connection.js')
    
    // This should go in the app/server setup, and waited for.
    Connection.open()
    
    router.get('/files', async (req, res) => {
       try {
         const files = await Connection.db.collection('files').find({})
         res.json({ files })
       }
       catch (error) {
         res.status(500).json({ error })
       }
    })
    
    module.exports = router
    


    1. Windowsマシンでdjangoを使用してセロリをテストする方法

    2. docker-composeを使用してmongodbでユーザーを作成する方法

    3. MongoDB-コレクションのクエリ

    4. Mongo DBは、キーフィールドに応じて最も高い値を持つすべてのレコードを検索します