はじめに
個人的な開発を行う中でNode.jsとMongoDBを使ってAPIを作成する機会がありました。
そこで私なりに作成した、一度作成したコネクションを使い回す方法を備忘録として残します。
実装内容
MongoDBのコネクション作成処理はシングルトンクラスで実装しました。
mongo.js
const { MongoClient } = require("mongodb");
const user = "ユーザー";
const password = "パスワード";
const dbName = "DBの名前";
const uri = "URL";
const client = new MongoClient(uri, {
useNewUrlParser: true,
useUnifiedTopology: true
});
class Mongodb {
constructor() {
this.db = null;
}
async get() {
// 一度もインスタンス生成されていない場合のみDB接続情報取得
if (this.db === null) {
await client
.connect()
.then(() => {
console.log("接続成功");
this.db = client.db(dbName);
})
.catch(error => {
throw error;
});
}
return this.db;
}
}
module.exports = new Mongodb();
以下のようにmongo.jsのgetメソッドをコールします。
apis.js
const dbConnection = require("シングルトンクラスのパス");
exports.findOne = function(req, res) {
const db = dbConnection.get();
res.end("呼べたよ");
};
exports.findAll = function(req, res) {
const db = dbConnection.get();
res.end("呼べたよ");
};
おわりに
今思えば大したことではないですが、結構時間がかかってしまいました。
同じようなことで悩んでいる方の参考になれば幸いです。