2017-08-12 1 views
1

私はGoogleアナリティクスAPIを複数回呼び出してサブスクリプションにロードしています。今度は、データがロードされていることをユーザーに知らせるプログレスバーを作成し、それがどれくらい長くかかるかを見たいと思っています。パブリケーションを使用してサブスクリプションのプログレスバーを作成する

私は、出版物を使用してサーバーからクライアントにデータを渡すことをお勧めします。これは本当ですか?

私はサーバー上で以下の出版物を作成しました。 何ですが、次のされない:

  1. は初期progressValueとid 1
  2. との最初の出版物を設定progressValueが100未満であると、1の出版物が変化していることを伝える場合、ループ保ちます。
  3. このコードの下に、progressValueがループ内のステップで設定されている他のパブリケーションがあります。

クライアントを見ると、最後のprogressValueだけがポストされます。これの前に、空の配列がたくさんあります。だから、のようだ:

[] 
[] 
[] 
[] 
... 
Progress publication 

は私がしたいことは、クライアントが最後のものだけするのではなく、progressValue内のすべての変更を受信することです。これをどうすれば解決できますか?

サブスクリプションプログレスバーを作成する方法についてのより良い提案がある場合は、これらの回答も受け入れられます。

if (Meteor.isServer) { 
    let progressValue = 0; 

    Meteor.publish('progress', function() { 
    const self = this; 
    let lastProgressValue = 0; 

    const id = 1; 

    self.added('progress', id, { 
     progress: progressValue, 
     total: 100, 
    }); 


    while (progressValue < 100) { 
     self.changed('progress', id, { 
     progress: progressValue, 
     total: 100, 
     }); 
    } 
self.ready();  
    }); 
... 

答えて

0

うーん...そう、ここにはいくつかのものがあります。

私は、出版物を使ってサーバーから クライアントにデータを渡すことをお勧めします。これは本当ですか?

これは、ddpを使用するメテオの全体点です。データがサーバーから自動的にクライアントに送信されることを意味します。したがって、データを操作する作業の大半は、実際にはminimongoを使用してクライアント側で処理されます。

http://richsilv.github.io/meteor/meteor-low-level-publications/

どのように進行んん...「オートマジック」部分の良い議論のために、この記事を見たことがありますか?

サーバー側でインクリメントを処理しないでください。代わりに、おそらく反応的な集約を使用してサーバーの単純なカウントを取得する(私の答えはHow to reactively aggregate mongodb in meteorを参照してください)、クライアントに送信します。したがって、サーバーは出版物としてカウントを行い、クライアントに '57'が来るように指示します。

通常のデータパブリケーションとして、57レコードをクライアントに送信します。クライアントでは、基本的にはサーバーと同じ要約を実行しますが、57のデータレコードのうちの一部しかクライアントによって受信されていないため、合計でサーバーメッセージで受信したクライアントを分割して、送信されます。サーバー上の

概要

を - 2つの出版物、クライアント上で

を送られている通常のデータとして送信され、1されるレコードのカウントのために1つの反応性骨材 - カウントする機能ローカルminimongoコレクションのレコード - collection.find({})。count() - このトリックを行います。これは、各レコードがサーバーからクライアントによって受信されるたびに増加します。

進捗状況は、クライアントのカウントを配信するサーバーの送信カウントで除算したものと同じくらい簡単です。

+0

明日はお試しいただきありがとうございます。それがうまくいくかどうかを知らせ、後で答えを受け入れる。 – Christoph

+0

それは動作します!アドバイスをいただきありがとうございます。 – Christoph

関連する問題