无法访问Node.js到MongoDB(2022)
我以前在使用Node.js访问MongoDB时遇到了一些意外的麻烦。
为了不忘记,我会记录下来。
安装
顺便提一下,操作系统是Windows 10。
-
- Node.jsをインストーラの指示に従ってインストール(v18.0.0)
-
- MongoDBをインストーラの指示に従ってインストール(v5.08)
-
- ⇒インストール時、「Install MongoD as a Service」にチェック
-
- (MongoDB ServiceサービスがWindowsに登録される)
-
- ⇒途中「MongoDB Compass」にチェックをつけておく
-
- (インストール後MongoDB compassが立ち上がる)
- ⇒インストール後、mongoのパスを通しておく
使用MongoDB进行数据注册
将数据添加到MongoDB数据库中
在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
-
- 在任意位置创建一个合适的文件夹
- 打开命令提示符,并转到上面创建的文件夹,在命令行中使用npm安装mongodb。
cmd > cd (作成したフォルダのパス)
cmd > npm install mongodb
使用Node.js访问MongoDB
在上述创建的文件夹中创建一个名为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”即可完成。
备注
-
- URLの記述が多くのサイトではmongodb://localhost:27017と書いてあったのにそれではつながらない。localhostを0.0.0.0としたり、127.0.0.1としたら大丈夫だった。そこっ!?
-
- ⇒ファイアウォールとかほかの設定見直しでずいぶん時間がかかってしまった。。
-
- MongoDBのサービスは、Windowsの場合インストーラでチェックを付ければ手動でサービスを登録する必要はない。コマンドプロンプトでmongoと打つのは、mongoシェル(?)を呼び出すためのもので、MongoDBの起動とは関係ない。(当たり前?)
- MongoDB Compassは使いやすい!いいね!