0

このコードは、Meteor プロジェクトのclient/main.jsファイルで取得します

Template.panel.onCreated(function loginOnCreated() {
  var profile = Session.get('profile');

  this.myvar = new ReactiveVar(User.find({}).fetch());
});

の結果User.find({})は空です。これを他の場所( を含むmeteor mongo)でクエリすると、ユーザーの配列が取得されます。

したがって、このコードがクライアント側で実行されているという事実に問題があるのではないかと思います。この同じファイルで、このクエリは他の場所で機能しますが、おそらくサーバー コンテキストで機能します。

ReactiveVarテンプレート/ページが読み込まれるとすぐに、これに Mongo の結果を入力するにはどうすればよいですか?

Meteor.startup()サーバー側で次のようなことをすると:

console.log(User.find({}).count());

それは私に正しいユーザー数を与えます。すぐに。

@編集

数秒を追加するだけsetTimeoutで(1秒ではなく、長い時間が必要です)、これとまったく同じ場所で機能します。

Template.panel.onCreated(function loginOnCreated() {
//...
setTimeout(function(){
    template.timeline.set(User.find({}).fetch());
    console.log(timeline)
  },3000);
});

では、この操作を許可するのになぜそんなに時間がかかるのか、誰か知っていますか? 回避策はありますか?

4

1 に答える 1

0

User.find({}).fetch() は、サーバー側でのみユーザーのリストを提供します。

おそらく、サーバー側でユーザー リストを取得するための meteor メソッドを作成し、meteor.call を使用して呼び出すことができます。

この呼び出しへのコールバック関数で、結果を目的の変数に割り当てることができます。

于 2016-11-22T05:39:32.897 に答える