プロジェクト用の管理アプリとクライアント アプリを使用できるようにしたいと考えています。理想的には、MongoDB コレクションを共有できるようにしたいと考えています。どうすればこれを達成できますか?
2 つの異なるアプリで同じ名前のコレクションを作成しようとしましたが、Meteor はデータを別々に保持することがわかりました。私に何ができるか考えていますか?ありがとう。
export MONGO_URL=mongodb://localhost:3002/meteor
次に流星アプリを実行すると、流星が使用するデフォルトのデータベースが変更されます。したがって、データベースやコレクションを共有しても問題ありません! 管理上の理由から、Meteor の内部 MongoDB を使用する以外に、自分で管理する個別の MongoDB サーバーを使用します。
合理的な質問であり、おそらくこの回答を超えて議論する価値があります:
MongoDB 接続は Meteor アプリケーション プロセス自体によって処理されます。これは、私が読んで理解している限りでは、次のように記述できるアプローチを対象とする Meteors 哲学の一部です。それ。
これを念頭に置いて、1 つのアプリケーション (つまり、Meteor アプリ) で「管理者」クライアントと「クライアント」クライアントを組み合わせることが、おそらく好ましい方法です。
ただし、サーバー管理ビューからは、接続は Meteor によって処理され、プロジェクト ディレクトリに常駐するデフォルトのローカル データ ソースが常に存在します ( 、Meteorアプリケーション プロセスの実行中に mongo 接続文字列を取得して.meteor/local/db
みてください)。ただし、これらの配置手順で説明されているように、配置目的でmeteor mongo --url
オプションのデータ ソース文字列を指定することもできます。
したがって、意図したセットアップを機能させるには、「ローカル開発展開」のやや不気味な方法を選択する必要があります。または、ソースをハックして...いいえ、忘れてください。おそらく、アプリケーションとクライアントでリアルタイムの UI 更新 (パブリッシュ) を利用したいと思うでしょう。そのため、今では Meteor アプリケーションが「アプリケーション データ ソース」に関連付けられ、その逆も行われています。別のアプリから接続する場合、モデルの変更をトリガーするイベントは、それらのアプリケーション間で転送されません。もちろん、mongoDB インスタンス自体はそれを認識していません。
コア チームは、Meteor インスタンス全体でコア モデル/コレクション抽象化の共通サービス レイヤーを提供する何らかのモジュール コンセプトでアーキテクチャを拡張しない限り、考慮された理由により、データ ソース接続を構成セクションに公開しないと確信しています。パブリッシュ/サブスクライブ イベントの認識をサポートすることはほとんどありません。