- Meteor.call()メソッドは、クライアント側またはサーバー側の要求に対してのみ使用します。助言してください
- 私のアプリでは、Meteor.users()はすべてのユーザーをコンソールに表示します。これを無効にする方法。
答えて
あなたは、サーバー側のメソッドを呼び出すために、クライアント側でMeteor.call()を使用する必要があります。流星は素晴らしいですdocumentation about methods。
Meteor.users()がクライアント側のすべてのユーザーを返す場合、サーバーはすべてのユーザー文書を公開しています。インストール後に流星autopublish package(
meteor remove autopublish
)を削除しましたか?
1 Meteor.call()
Meteor.call()
は、典型的には、クライアント側からサーバ側のメソッドを呼び出すために使用されます。ただし、サーバー側のMeteor.call()
を使用して別のサーバー側の関数を呼び出すこともできますが、これはお勧めできません。ここで
だからサーバーコール(グッド・プラクティス)サーバーの呼び出しに
Meteor.call()
- Clientを使用するには、2つの方法があります(よくない習慣が、それは動作します)何が流星docsピンチで言って:
このメソッドは、 Meteor.callを使用しています。 一部のコード をクライアントから呼び出し可能にする必要がある場合にのみメソッドを使用するようにしてください。 コードをサーバーからのみ呼び出すモジュール化する場合は、メソッドではなく通常の JavaScript関数を使用します。
2.パブリケーションとサブスクリプション
は、あなたのデータが安全であることを確認するために、あなたは
autopublish
とinsecure
パッケージを削除する必要があります。これにより、コレクションの自動パブリケーションが無効になります。また、クライアントからのデータベースへの自由な書き込みアクセスも禁止されます。ここで、コレクションの多くを必要なだけ公開していることを確認するには、出版物を設定する必要があります(または、すでに設定されている場合は調べてください)。
公開:これは、サーバーからクライアントへのデータベースコレクションを提供するものです。
それは、プロジェクト内のあなたの
api
やserver
フォルダにそれを探して、次のようになります。上記の例では、我々はMongoDBの呼び出しで任意のフィルタパラメータを提供していない、ということMeteor.publish('allUsers', function() { if (!this.userId) { return this.ready(); } return Meteor.users.find({}); });
お知らせを、このパブリケーションはデータベースからすべてのユーザーを持つカーソルを返します。
Meteor.publish('currentUser', function() { if (!this.userId) { return this.ready(); } return Meteor.users.find({ _id: this.userId }); });
ここでは、
_id
というフィールドをフィルタとして提供しています。これにより、利用可能な項目として現在のユーザオブジェクトのみを持つMeteor.users()
のカーソルが返されます。サブスクリプション:あなたの出版物にアクセスするには、あなたはこのように、それに対応し、クライアント側のコードのサブスクリプションを呼び出す必要があります:
Meteor.subscribe('currentUser');
あなたはが同時に
allUsers
に加入していないことを確認します - - 複数のサブスクリプションが両方のサブスクリプションの和集合を提供するためです。そのようにすれば、あなたのクライアント側のmini-mongoにはcurrentUser
+allUsers
=allUsers
があります。私たちはそれを望んでいません。上記を確認したら、クライアント側のコード(またはコンソール)に
Meteor.users()
を使用して、現在ログインしているユーザーのユーザーデータのみが含まれていることがわかります。Publications and Subscriptionsの詳細については、公式文書を参照してください。
- 1. クライアントのMeteor.callメソッドから結果を返す方法は?
- 2. Meteor.callとサーバーの方法が適切
- 3. ログインイベントのMeteor.js
- 4. change event on Meteor.js
- 5. Meteor.jsとLDAP
- 6. GraphQLとMeteor.jsデータトラッキング
- 7. Meteor.callを使用して複数のフィールドを挿入する
- 8. Meteor.js onStopイベント内でuserIdを取得する方法は?
- 9. meteor.jsのテンプレートonloadイベント
- 10. コールMeteor.call()と前に `内部で待つ:
- 11. コールバックが返されていないmeteor.call
- 12. 非同期Meteor.call内の反応コンポーネント
- 13. Meteor.jsプロダクションのフォルダをアップロード
- 14. はReduxのMeteor.js混合物
- 15. は自動的にMeteor.js
- 16. Meteor.jsコルドバのApp失敗DOCTYPE
- 17. Meteor.js公開と購読?
- 18. meteor.jsでの継承の使用
- 19. meteor.callメソッドが正常に実行されたことを確認する方法は?
- 20. meteor.js:メールでユーザーを見つける
- 21. Meteor.jsはArangoDBと連携しますか?
- 22. 私のMeteor.jsチャットアプリケーションにapi.ai chatbotを追加
- 23. meteor.js Ostrio:files:パッケージ "aslagle:reactable -table"でファイルを表示
- 24. Meteor.jsのテンプレートヘルパーとテンプレートイベントハンドラの相違点
- 25. PHPサーバー側でmeteor.jsを使用する
- 26. Meteor.jsでGoogle Maps APIを使用する
- 27. windows上でのmeteor.jsとmongoDBの操作
- 28. Meteor.jsでjQueryを適用する方法
- 29. ログなしでMeteor.jsが殺される
- 30. Meteor.js libフォルダをロードするが、クライアント
私はすでにすべてのコレクションを公開していますが、自動公開をまだ削除しています –
ユーザーコレクションを公開している別のパッケージがない限り、パッケージを削除してもそうはなりません。 .meteor/versionsファイルを共有して、Meteor.publish( 'users')経由でユーザーコレクションを公開するサーバーサイドコードがないことを確認してください。 – Matt