2017-07-04 16 views
0

私は同じデータベースをクエリする2つのアプリケーションを持っていて、それらは両方ともdiffコレクションをdbに作成しました。 App A(myapp:3000)はコレクションcommentsを作成し、app Bはmyapp:3300に作成し、同じエンドポイント(school)の末尾にcoursesを作成しました。両方のサーバーが動作していますが、アプリケーションBでアプリケーションAによって作成されたコレクションをどのようにクエリしますか? この質問をする私の理由は、初心者としては、グローバル変数を使ってアプリケーションで作成された新しいコレクションを照会するのは簡単です。のは、私がUsesList = new Mongo.Collection('useslist');を作成したとしましょう、私はこのようにそれを公開することが可能です:他のMeteor jsアプリケーションでアプリケーションによって作成されたQueriyngコレクション

Meteor.publish('UsesList', function() { 
     if (!this.userId) { 
      return false; 
      throw new Meteor.Error('Not authorized'); 
     }else{ 
      return UsesList.find(); 
     } 
    }); 

私は、この変数へのアクセス権を持っていないだろう、と私はコレクションを照会するために、直接DBにアクセスすることは非倫理的かもしれないと思うので。私はあなたの専門的なアドバイスが必要です。ありがとう。

+0

は、バックエンドとして同じのmongo DBインスタンス/クラスタを使用して、両方のアプリはありますか? – Jankapunkt

答えて

1

同じコレクションを2つの異なるアプリケーションで「作成」しても問題ありません。

コレクションIDは、コレクションコンストラクタに提供する名前文字列と、データベース自体のIDによって決まります。

任意の変数識別子に割り当てることができ、それらはアプリケーション間で異なる場合があります。

ただし、ES6モジュールの使用を開始し、グローバルな名前空間の汚染を減らすことをお勧めします。学習中はベストプラクティスを使い始めるので、後で悪いものを取り上げる必要はありません。

そうでは、両方のアプリケーションが同じDBに接続されている提供:

// same in app 1 and app 2 
import { Mongo } from 'meteor/mongo'; 
export const UsesList = new Mongo.Collection('user_list'); 

// and importing it 
import { UserList } from '../path/to/other/file'; 
+0

この機能は 'Meteor version 1.3 +'、 '1.2.1'のバージョンで動作し、物事を壊さないようにアップグレードするのを恐れていますが、動作しませんでした。他の提案はバージョン1.2.1に関連しています。この偉大な助けをありがとう – kehinde

+1

ので、モジュールの機能なしでそれを行う。両方のアプリで同じように定義するだけです。あなたはそれを試しましたか?うまくいかない場合は、*同じ* DBが実際に使用されていることを確認してください。もちろん、異なるマシン上に同じ名前の2つのローカルDBは動作しません。 – MasterAM

関連する問題