1
0

More than 1 year has passed since last update.

Node.jsからMongoDBにアクセスできない(2022)

Last updated at Posted at 2022-05-19

Node.jsからMongoDBにアクセスするまでに意外と手間取ってしまった。。
忘れないように記録しておく。

インストール

ちなみにOSは、Windows 10

  • Node.jsをインストーラの指示に従ってインストール(v18.0.0)
  • MongoDBをインストーラの指示に従ってインストール(v5.08)
     ⇒インストール時、「Install MongoD as a Service」にチェック
      (MongoDB ServiceサービスがWindowsに登録される)
     ⇒途中「MongoDB Compass」にチェックをつけておく
      (インストール後MongoDB compassが立ち上がる)
     ⇒インストール後、mongoのパスを通しておく

MongoDBにデータ登録

  • コマンドプロンプトを開いて、mongoシェルを起動
コマンドプロンプト
cmd > mongo
  • データベース:myDBを作成
コマンドプロンプト
> use myDB
switched to db myDB
  • コレクション:tableを作成
コマンドプロンプト
> db.createCollection('table')
{"ok" : 1 }
  • 適当なデータを登録
コマンドプロンプト
> db.table.insertOne({name:"taro",age:10})

⇒MongoDB Compassでデータが登録されていることを確認する

Node.jsの準備

  1. どこかに適当なフォルダをつくる
  2. コマンドプロンプトを開き、上記で作ったフォルダに移動して、npmでmongodbをインストール
コマンドプロンプト
cmd > cd (作成したフォルダのパス)
cmd > npm install mongodb

Node.jsからMongoDBにアクセス

上記で作ったフォルダに、app.jsを作る

app.js
const mongodb = require('mongodb');
const MongoClient = mongodb.MongoClient;
const url= 'mongodb://127.0.0.1:27017';
const client = new MongoClient(url);

async function run() {
  try {
    await client.connect();
    const database = client.db('myDB');
    const table = database.collection('table');
    const query = { name: 'taro' };
    const data = await table.findOne(query);
    console.log(data);
  } finally {
    await client.close();
  }
}
run().catch(console.dir);

あとはコマンドプロンプトから node app.jsを実行すればOK

メモ

  • URLの記述が多くのサイトではmongodb://localhost:27017と書いてあったのにそれではつながらない。localhostを0.0.0.0としたり、127.0.0.1としたら大丈夫だった。そこっ!?
    ⇒ファイアウォールとかほかの設定見直しでずいぶん時間がかかってしまった。。
  • MongoDBのサービスは、Windowsの場合インストーラでチェックを付ければ手動でサービスを登録する必要はない。コマンドプロンプトでmongoと打つのは、mongoシェル(?)を呼び出すためのもので、MongoDBの起動とは関係ない。(当たり前?)
  • MongoDB Compassは使いやすい!いいね!
1
0
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
0