Connection
を作成します アプリデータベース接続を管理するシングルトンモジュール。
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