7
なぜMeteorコレクションのカーソルforeachループが以下のコードで機能しないのですか?ループをTemplate.messages.renderedまたはDeps.autorun関数の中にラップすると、それは機能します。なぜか分からない。Meteors collection cursor forEachが動作しない
Messages = new Meteor.Collection("messages");
processed_data = [];
if(Meteor.isClient) {
data = Messages.find({}, { sort: { time: 1 }});
data.forEach(function(row) {
console.log(row.name)
processed_data.push(row.name);
});
}
これは、ブラウザがアプリケーションを読み込んだときにコレクションが準備ができていないことを意味します。私は "準備ができている"ということを理解していません。 – stariqmi
コレクションは非同期をロードしています。つまり、メッセージ読み込みプロセスを開始してから通常はコードを処理します。次に、非同期プロシージャにまだロードされていないコレクションにアクセスしようとしています。それは準備ができていないことを意味します。下のコードで – jhbruhn
、私はpublish/subscribe技術を試しました。動作しますが、グローバルに処理された配列は、ブラウザのコンソールでアクセスすると空です。サブスクライブコールバック内のconsole.logの場合、コンソールに入力するときに入力されますが、入力されません。 – stariqmi