今回は「Express」から「MongoDB」に接続してみたいと思います。MongoD BはMySQLなどのRDBMS(Relational Database Management System)とは違い「NoSQL」と呼ばれるデータベースとなります。
「RDMS」はデータ構造をあらかじめ設定しなければいけないのに対し、「NoSQL」はデータ構造を決めておかなくても良いという特徴があります。また「NoSQL」はSQL言語を必要としないデータベースです。
簡単に違いを説明すると、「RDBMS」は複雑なデータに向いており、「NoSQL」は単純なデータに対し有効です。「NoSQL」はまた、データが肥大化しても性能劣化が起こりづらい特徴があります。
それでは実際にmongoDBと接続していく前に、各種インストールを行って行きましょう!筆者はMacで開発を行っているので、Macのインストール方法を紹介します。
MacにHomebrewを使ってMongoDBをインストールする。
ではインストール方法を説明していきます。と言っても、インストール方法が説明されているサイトURLを載っけておきますね!多分一から説明するより、確実に分かりやすかったので笑
MACにMongoDBをインストールする
https://reffect.co.jp/windows/mac-mongodb-install#Homebrew
MongoDBのインストールが終わったら、次にexpress側の設定を行います。
Node.js+Expressに「Mongoose」を使用して接続する
mongooseとはnode.jsでmongoにアクセスしたり保存したりするのをとても簡単にしてくれるライブラリです。今回も前回と引き続き、以前の記事で作成したアプリケーションフォルダ「express-gen-app」で説明をしていきます。もちろん独自で開発を進めている方にもわかる内容となっております。
「mongoose」のインストール
まず初めに行うのは「express-gen-app」に「mongoose」をインストールします。ターミナルから「/express-gen-app」に移動し、以下のコマンドを打ち込んでください。
npm install mongoose
これはもう、お馴染みのやつですね。これでMongooseのインストールは終わりです。次は「app.js」の修正を行っていいきます。
「app.js」を修正し、MongoDBと接続する
「Express Generator」で自動生成した「app.js」に下記のコードを追加してみて下さい。
var mongoose = require('mongoose');
const options = {
useUnifiedTopology: true,
useNewUrlParser: true
}
mongoose.connect('mongodb://127.0.0.1/users_db',options);
const db = mongoose.connection;
db.on('error',console.error.bind(console,'DB connection error:'));
db.once('open', () => console.log('DB connection successful!!!!'));
追加したコードを解説します。
var mongoose = require(‘mongoose’); 1行目
これはインストールした「mongoose」ロードし、使用できるようにしています。いつものやつですね!
const options … 3行目〜6行目
ここでは7行目に記述するメソッドの第二引数に設定する値を定義しています。7行目の第二引数は定義しなくても動作はしますが、警告が発生するので、設定しておきましょう。実際の警告文が以下になります。
DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.
(node:7565) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
とりあえず意味は考えずに設定しておきましょう!
mongoose.connect() 7行目
7行目でデータベースに接続しています。第一引数にはローカルホストのIPアドレスとデータベース名を記述しておきましょう。第二引数は先ほどの「options」を設定しておきましょう。
mongoose.connect('mongodb://127.0.0.1/users_db',options);
const db = mongoose … 9行目〜11行目
const db = mongoose.connection;
db.on('error',console.error.bind(console,'DB connection error:'));
db.once('open', () => console.log('DB connection successful!!!!'));
この行ではエラー発生時のイベントと接続時成功時のイベント処理を行っています。これが3行がないと接続できたかどうか、判りにくくなってしまいます。必ず記載するようにしましょう。
以上で接続するためのコードは終了です。ターミナルで「npm start」と実行し、「DB connection successful!!!!」と表示させれば今回の目標は達成です。
次回はデータベースに値を追加し、ブラウザにデータ一覧を表示させてみましょう。