ローカル 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 サイトの他の関連記事を参照してください。