Meteor-publish-subscribe

提供:Dev Guides
移動先:案内検索

Meteor-公開および購読

コレクションの章ですでに説明したように、すべてのデータはクライアント側で利用できます。 これは、発行および購読メソッドで処理できるセキュリティ問題です。

自動公開の削除

この例では、次のデータで PlayersCollection コレクションを使用します。 チャプター自体に集中できるように、このコレクションを準備しました。 MeteorアプリでMongoDBコレクションを作成する方法がわからない場合は、リンク:/meteor/meteor_collections [collections]の章を確認してください。

Meteor Publish and Subscribe Database Data

データを保護するには、クライアント側でデータの使用を許可していた autopublish パッケージを削除する必要があります。

C:\Users\username\Desktop\meteorApp>meteor remove autopublish

この手順の後、クライアント側からデータベースデータを取得することはできません。 コマンドプロンプトウィンドウでサーバー側からのみ表示できます。 次のコードをチェックアウトします-

meteorApp.js

var PlayersCollection = new Mongo.Collection('playersCollection');
var myLog = PlayersCollection.find().fetch();
console.log(myLog);

コマンドプロンプト*ウィンドウには、4つのオブジェクトを含むコレクション全体が表示されますが、 developersコンソール*には空の配列が表示されます。 これでアプリがより安全になりました。

流星の公開と購読の自動公開の削除

パブリッシュおよびサブスクライブの使用

クライアントがデータを使用できるようにしたいとしましょう。 このために、サーバーで* Meteor.publish()*メソッドを作成する必要があります。 このメソッドは、データをクライアントに送信します。

クライアント側でそのデータを受信して​​使用できるようにするために、* Meteor.subscribe()*メソッドを作成します。 例の最後では、データベースを検索しています。 このコードは、クライアント側とサーバー側の両方で実行されています。

var PlayersCollection = new Mongo.Collection('playersCollection');

if(Meteor.isServer) {

   Meteor.publish('allowedData', function() {
      return PlayersCollection.find();
   })
}

if (Meteor.isClient) {
   Meteor.subscribe('allowedData');
};

Meteor.setTimeout(function() {
   var myLog = PlayersCollection.find().fetch();
   console.log(myLog);
}, 1000);

データが developers consolecommand prompt ウィンドウの両方に記録されていることがわかります。

流星の公開と購読はすべて許可

クライアントデータのフィルタリング

データの一部を公開することもできます。 この例では、 name = "John" でデータを公開しています。

var PlayersCollection = new Mongo.Collection('playersCollection');

if(Meteor.isServer) {

   Meteor.publish('allowedData', function() {
      return PlayersCollection.find({name: "John"});
   })
}

if (Meteor.isClient) {
   Meteor.subscribe('allowedData');
};

Meteor.setTimeout(function() {
   myLog = PlayersCollection.find().fetch();
   console.log(myLog);
}, 1000);

このコードを実行すると、コマンドプロンプト*はすべてのデータをログに記録しますが、クライアント側の*コンソール*は *John という名前の2つのオブジェクトを記録します。

流星の公開と購読はすべて許可