[Node.js] 使用TypeScript编写Express – MongoDB连接章节

首先请继续阅读本文,并阅读以下内容。

    • [Node.js] Express を TypeScript で書く – 環境整備まで

 

    [Node.js] Express を TypeScript で書く – ルーティング編

再次,环境的前提如下。

    • 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,因此我们将创建一个可在连接和获取数据库的过程中通用使用的组件。我们将参考官方文档进行创建。

连接代码如下所示。

import * as MongoDB from 'mongodb';

const url = 'mongodb://localhost:27017';

client.connect(url, { useNewUrlParser: true }, (err, client) => {
    if (err) {
        // 接続エラー時の処理
        return;
    }

    // 接続後の処理
    client.close();
});

为了避免使用 mongodb:// 类似的URL时出现警告,我会添加 { useNewUrlParser: true }。

连接后,获取数据库非常简单,只需按照以下方式编写即可。

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;

我会将上述内容分配给 /dev,但省略了对 src/server.ts 的描述。

只要在服务器启动后连接到 http://localhost:3000/dev/mongodb,成功获取到 { message: ‘MongoDB Connected.’ } 就算是OK。

接下来将实施CRUD的操作。

    [Node.js] Express を TypeScript で書く – MongoDB CRUD編

bannerAds