MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jaki jest najlepszy sposób obsługi globalnego połączenia Mongodb w NodeJs?

Utwórz Connection moduł singleton do zarządzania połączeniem z bazą danych aplikacji.

MongoClient nie zapewnia pojedynczej puli połączeń, więc nie chcesz wywoływać MongoClient.connect() wielokrotnie w Twojej aplikacji. Klasa singleton do owijania klienta mongo działa z większością aplikacji, które widziałem.

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 }

Wszędzie, require('./Connection') , Connection.open() będzie dostępna, podobnie jak Connection.db właściwość, jeśli została zainicjowana.

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo:jak sortować według wagi zewnętrznej

  2. Błąd duplikatu klucza Mongoose z upsert

  3. Przypadki użycia NoSQL

  4. Przełączanie awaryjne replikacji MySQL (i innych) — czy powinno być zautomatyzowane?

  5. 3 sposoby konwersji daty na ciąg znaków w MongoDB