Създайте 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