2

クライアントminimongoに読み込まれるコレクションに依存するコードを作成する場合は、コレクションを明示的にサブスクライブし、読み込みが完了したときに適切なコールバックを渡す必要があることを理解しています。

私の問題は、自分のページがアクセスする必要のある重要なサブドキュメントをユーザーコレクションにたくさん保存していることです。私はMeteorアカウントを使用しており、ログインしているユーザードキュメント全体が利用可能になるまで待つ同様の方法を見つけようとしています。これを使用してテストする場合:

console.log(Meteor.user());

ログに記録された場合、最初にオブジェクトを_idだけで登録し、後で他のフィールドを送信するようです(サーバーから電子メール以外に公開するには、他のフィールドを明示的に追加する必要があることを知っています)。

ログインしたユーザードキュメントが完全に読み込まれるのを待ってからコードを実行する方法はありますか?

ありがとう!

4

1 に答える 1

2

Deps.autorun (以前の Meteor.autorun) は、リアクティブな変更が発生したときに再実行されます。これは、ユース ケースに適合する可能性があります。

クライアント js

Deps.autorun(function () {
    if(Meteor.user() {
          //Collection available
      }
    });

サブスクリプションを使用している場合は、そのコールバックも使用できます。少しカスタマイズする必要があるかもしれないので、ドキュメントを読んで、autopublish パッケージを削除し、他のコレクションをサブスクリプションに設定してください。

サーバーjs:

Meteor.publish("userdata", function () {
    //You might want to alter this depending on what you want to send down
    return Meteor.users.find({}, {}});
});

クライアント js

Meteor.subscribe("userdata", function() {
    //Collection available
});
于 2013-03-13T22:10:31.723 に答える