はじめに
この記事は続き物となっております。以下も合わせてお読みください。
また環境は以下を前提としてます。
- Windows 10
- Node.js 10.10.0
- Express 4.16.3
- TypeScript 3.0.3
- MongoDB 4.0.2 Community Server
- MongoDB Node.js 3.1.4
- Visual Studio Code 1.26.1
MongoDB の導入
サーバーの導入
MongoDB公式 よりCommunity Server をダウンロードしてきます。インストールはwindows環境であればインストーラーのウィザードに従うだけで出来ます。サーバーはサービスとして登録されるので特に意識して立ち上げるといった必要はありません。
モジュールの導入
プロジェクトの方に戻り、MongoDB用のモジュールをインストールします。TypeScript用の型定義も一緒にインストールします。現時点ではバージョンは3.1です。
npm install --save mongodb @types/mongodb
MongoDBを使用する準備
APIの各所でMongoDBを使うことになるので、接続、DB取得までを共通で使える部品を作ります。公式のドキュメントを見ながら作ります。
接続までは以下のソースコードの通りです。
import * as MongoDB from 'mongodb';
const url = 'mongodb://localhost:27017';
client.connect(url, { useNewUrlParser: true }, (err, client) => {
if (err) {
// 接続エラー時の処理
return;
}
// 接続後の処理
client.close();
});
{ userNewUrlParser: true }
を入れておかないと mongodb://
といったURLを使ったときに警告がでるので入れておきます。
接続後、dbを取得するのは簡単で以下のように書くだけです。
const db = client.db('dbname');
これらをまとめて関数化し部品にしたものが以下のソースになります。
import * as MongoDB from 'mongodb';
const url = 'mongodb://localhost:27017';
export const dbName = 'nekoblog';
export default function (callback: (err: MongoDB.MongoError, client: MongoDB.MongoClient, db: MongoDB.Db) => void) {
const client = MongoDB.MongoClient;
client.connect(url, { useNewUrlParser: true }, (err, client) => {
if (err) {
callback(err, null, null);
return;
}
callback(null, client, client.db(dbName));
});
}
使い方は以下の感じです。
import mongodbClient from './mongodbClient';
mongodbClient((err, client, db) => {
if (err) {
// エラー時の処理
client.close();
return;
}
// 接続完了時
client.close();
});
接続テスト
接続テスト用のAPIを作成し、MongoDBに接続が出来ているか確認します。
import * as Express from 'express';
import mongodbClient from '../../common/mongodbClient';
const router = Express.Router();
router.get('/mongodb', (req, res, next) => {
mongodbClient((err, client) => {
if (err) {
res.status(500).json({ message: 'MongoDB not connected.' });
return next(err);
}
client.close();
res.json({ message: 'MongoDB Connected.' });
});
});
export default router;
src/server.ts
への記述は省略しますが上を /dev
に割り当ててます。
サーバー起動後、 http://localhost:3000/dev/mongodb
に接続し { message: 'MongoDB Connected.' }
が取得できればOKです。
次からCRUDの実装をしていきます。