Buat Connection
modul tunggal untuk mengelola koneksi database aplikasi.
MongoClient tidak menyediakan kumpulan koneksi tunggal sehingga Anda tidak ingin memanggil MongoClient.connect()
berulang kali di aplikasi Anda. Kelas tunggal untuk membungkus klien mongo berfungsi untuk sebagian besar aplikasi yang pernah saya lihat.
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 }
Di mana pun Anda require('./Connection')
, Connection.open()
metode akan tersedia, seperti halnya Connection.db
properti jika telah diinisialisasi.
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