1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Node.jsを使ってMongoDBに対するコネクションを使い回す方法

Last updated at Posted at 2021-12-08

はじめに

個人的な開発を行う中で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("呼べたよ");
};

おわりに

今思えば大したことではないですが、結構時間がかかってしまいました。
同じようなことで悩んでいる方の参考になれば幸いです。

参考

Setting up singleton connection with node.js and mongo

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?