MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Кой е най-добрият начин за справяне с глобалната връзка на Mongodb в NodeJs

Създайте Connection singleton модул за управление на връзката с базата данни с приложения.

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB не създава база данни в shell

  2. Промяна на директорията за съхранение на данни MongoDB

  3. MongoDB Node findone как да се справя без резултати?

  4. защо не мога да стартирам mongodb

  5. MongoDB $sortByCount оператор за агрегиране