Tạo Connection
mô-đun singleton để quản lý kết nối cơ sở dữ liệu ứng dụng.
MongoClient không cung cấp nhóm kết nối singleton nên bạn không muốn gọi MongoClient.connect()
lặp lại trong ứng dụng của bạn. Một lớp singleton để bao bọc ứng dụng mongo hoạt động cho hầu hết các ứng dụng mà tôi đã thấy.
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 }
Mọi nơi bạn require('./Connection')
, Connection.open()
sẽ có sẵn phương thức, cũng như Connection.db
nếu nó đã được khởi tạo.
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