概要
なぜかMongoDB Node.js Driverを使用したNode.jsからMongoDBへの接続ができなかったので、試行錯誤の末に、よくわからないままMongooseを使ったら接続成功した話です。
UbuntuもNode.jsもDBも初心者なので、間違いがあればご指摘いただけると嬉しいです。
状況
- 接続が成功した場合はコンソールに「connected」というログを吐き、失敗した場合はエラーが出るはずだが、ログもエラーすらも表示されない
- MongoDBの設定は基本デフォルトのまま、UFWはポート27017を許可
- 確認のためLinuxの
nc
コマンドを使用したところ、こちらでは接続が成功したのでモジュールとの相性が悪いのではと考察
実行環境
- MacBook Pro 12,1 - Ubuntu 22.04.4 LTS
- Node.js 20.11.1, npm 10.4.0
- MongoDB Node.js Driver 6.3.0
- Mongoose 8.1.3
問題のあるコード
index.js
const MongoClient = require("mongodb").MongoClient;
const assert = require("assert");
client = new MongoClient("mongodb://127.0.0.1:27017");
client.connect((error) => {
assert.equal(null, error);
console.log("connected");
const db = client.db("test");
client.close();
});
ちなみに、下記のようなMongoClientのインスタンスを作らず接続する方法も試しました。
https://qiita.com/one-kelvin/items/c0c036f774f0b3b98ae5
コンソール出力
$ node index.js
(何も表示されないので)
やけくそでMongooseを使ってみた
index.js
const mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1:27017/test").then(() => {
console.log("connected");
mongoose.disconnect();
});
コンソール出力
$ node index.js
connected
つながった!!
感想
Mongooseで接続が確認できた後、コレクションの操作などを試してみましたが無事成功しました。知識が足りないのもあって原因が皆目見当もつきませんが、とりあえずつながって良かったです。