[解決済み] 1つのnode.jsプロジェクトでMongooseと複数のデータベースを利用する。
質問
私は、サブプロジェクトを含むNode.jsのプロジェクトを行っています。一つのサブプロジェクトには一つのMongodbデータベースがあり、Mongooseはデータベースのラップとクエリに使われる予定です。しかし、問題は
- モデルは1つの接続で構築されるため、Mongooseでは1つのMongooseインスタンスで複数のデータベースを使用することはできません。
-
Node.jsでは、複数のmongooseインスタンスを使用するために、複数のモジュールインスタンスを使用することはできません。
require()
. Node.jsのモジュールキャッシュを無効にすることはできますが、それはmongooseにしか必要ないので、良い解決策とは言えないと思います。私は
createConnection()
とopenSet()
をmongooseに入れましたが、解決には至りませんでした。mongooseインスタンスをディープコピーしてみたのですが( http://blog.imaginea.com/deep-copy-in-javascript/ を投げてしまいます。
RangeError: Maximum call stack size exceeded
.
mongooseで複数のデータベースを使用する方法、またはこの問題を回避する方法はありますか?mongooseは非常に簡単で高速だと思うので。また、他のモジュールはどうでしょうか?
解決方法は?
ひとつは、プロジェクトごとにサブフォルダを用意することです。そのサブフォルダに mongoose をインストールし、それぞれのサブアプリケーションのフォルダから mongoose を require() します。プロジェクトのルートやグローバルからではなくです。つまり、1つのサブプロジェクトに1つのmongooseをインストールし、1つのmongooseインスタンスを作成します。
-app_root/
--foo_app/
---db_access.js
---foo_db_connect.js
---node_modules/
----mongoose/
--bar_app/
---db_access.js
---bar_db_connect.js
---node_modules/
----mongoose/
foo_db_connect.jsで
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/foo_db');
module.exports = exports = mongoose;
bar_db_connect.jsにて。
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/bar_db');
module.exports = exports = mongoose;
db_access.jsファイル内
var mongoose = require("./foo_db_connect.js"); // bar_db_connect.js for bar app
これで、mongooseで複数のデータベースにアクセスできるようになりました。
関連
-
Vueの要素ツリーコントロールに破線を追加する説明
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み】"フォームが接続されていないため、フォームの送信がキャンセルされました "というエラーの取得について
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
[解決済み] Node.jsを完全にアンインストールして、最初から再インストールする方法 (Mac OS X)
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] CORSです。資格情報フラグが true の場合、Access-Control-Allow-Origin でワイルドカードを使用できない。
-
[解決済み】Node.jsでMongooseを使用してページングする方法は?
-
[解決済み】mongooseの_idと文字列の比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptの関数この指摘の問題を説明
-
Vueがechartsのtooltipにクリックイベントを追加するケーススタディ
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
Vueのクラススタイルの使い方の詳細
-
Vueの一般的な組み込みディレクティブの説明
-
[解決済み】ExpressJS - throw er Unhandled errorイベント
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
[解決済み】MongoDBとMongooseの違いについて