ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js モジュール間でデータベース接続を共有する方法の詳細な説明 (グラフィック チュートリアル)

Node.js モジュール間でデータベース接続を共有する方法の詳細な説明 (グラフィック チュートリアル)

亚连
亚连オリジナル
2018-05-21 11:25:031821ブラウズ

ローカル Node 環境のモジュール間でデータベース接続を共有するための統合データベース接続モジュールを作成できます。次に、Node.js モジュール間でデータベース接続を共有する方法を詳しく説明します

このタイトル自体が提案です。この場合、Node.js アプリケーションの各モジュールは同じデータベース接続を共有します。しかし、姿勢が間違っていると、見た目が悪くなったり、間違った姿勢になってしまうこともあります。

次の部分は無視して、直接本題に進んでください。

背景最近私は専門的なコース設計を行っており、タイトルは「チケット予約管理システム」です。要件が比較的シンプルだったので、最近勉強しているNode.jsを使ってやってみました。当初、どの Node.js フレームワークがより適しているかを調べていましたが、いくつかのフレームワークを検討した結果、ドキュメントや情報を調べる時間がないのであれば、直接記述し始めた方がよいことに気づきました。 。コードを書き終えたら、Github に投稿します。批判や修正は歓迎です。

データベースに関しては、JSON の方が馴染みがあり、好きだと思ったので (SQL をよく学習していない場合は認めてください -_-#)、MongoDB を選択しました。 Node + Mongo はバックエンドの組み合わせとして近年人気が高まっており、これを組み合わせて使用​​する方法に関する情報がインターネット上にたくさんあります。しかし、時間を節約し (コース設計には 1 週間以上しかかかりません)、システムとロジックにより集中するために、MongoDB データ モデリングに特に使用される Node.js 拡張機能である Mongoose を使用して、操作に必要な時間を大幅に短縮しました。データベースのコード。

本題へ 2 つのデータ モデル (Model) を確立しました。1 つはユーザー (User)、もう 1 つはフライト (Flight) で、それぞれ user.js と Flight.js の 2 つのモジュール (Module) にカプセル化されています。 。モデルは特にデータベースとの対話を担当します。最初は、私のコードは次のようになっていました:

// ----- user.js -----
// require mongoose.js 引用mongoose.js
var M = require('mongoose');
// connect to database 连接数据库
M.connect('mongodb://localhost/test');
// ... some other code ...

// ----- flight.js -----
// require mongoose.js 引用mongoose.js
var M = require('mongoose');
// connect to database 连接数据库
M.connect('mongodb://localhost/test');
// ... some other code ...

// ----- models.js -----
var user = require('./user'),
  flight = require('./flight');

// ----- index.js -----
var Models = require('./models');

言うまでもなく、この書き方はまったく DRY ではありません。このやり方自体が間違っています。 Index.js を実行すると、次のエラーが表示されます。

> node index.js
> Connection error: { [Error: Trying to open unclosed connection.] state: 2 }

エラーは次のとおりです: 閉じられていない接続を開こうとしました。

したがって、1 か所でデータベースに一度接続し、データベースに接続する必要がある他のモジュールがこのモジュールを通じてデータベースと対話する必要があります。それは電源タップのようなもので、「壁にはコンセントが 1 つしかない、掴まないでください! やらせてください! あなたは…それだけです!」と叫びます

具体的な計画データベースにモジュールに接続し、その接続をアプリケーション全体の他のモジュールに公開すると、データベースに接続する必要がある他のモジュールがこの接続を参照できるようになります。

// ----- database.js -----
var M = require('mongoose');
M.connect('mongodb://localhost/test');
// reference to the database connection 为这个连接创建一个引用
var db = M.connection;
// expose to modules that require database.js 把这个引用暴露给引用 database 模块的其他模块
module.exports = db;

// ----- user.js ----- flight.js 类似 -----
// ... some other code ...
// 我们会在 models.js 中,把数据库连接的引用作为参数传进来
module.exports = function( db ){
  if( db ){
    // ... do things with the connection ... 如果连接了数据库,就可以执行数据库相关的操作了
  }
}

// ----- models.js -----
// require database module, retrieve the reference to database connection 引用 databse 模块,获取数据库连接的引用
var db = require('./database');
// 把数据库连接的引用传入需要连接数据库的模块,任务完成!
var user = require('./user')( db ),
  flight = require('./flight')( db );

これは、Node.js アプリケーションの複数のモジュールがデータベース接続を共有できるようにする方法です。 StackOverflow でこれを見ました。

上記は私があなたのためにまとめたものです。

関連記事:

JavaScriptのいくつかの借用メソッドの詳細な説明(グラフィックチュートリアル)

JavaScriptを使用してパターンマッチングのStringメソッドを実装する

javascript この詳細な説明(グラフィックチュートリアル) )

以上がNode.js モジュール間でデータベース接続を共有する方法の詳細な説明 (グラフィック チュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。