2017-02-20 8 views
0

私のアプリケーションでサードパーティAPIのデータを使用し、サーバーから一定の頻度で必要なデータをポーリングしてクライアントに利用可能にする必要があります。最も簡単な方法は、コレクションを作成して更新し、pub/subを介してクライアントがデータを利用できるようにすることです。しかし、この特定のケースでは、そのデータを格納する必要はなく、そのデータを追跡する必要はなく、非常に頻繁に更新されるため、dbに格納するのは実際には追加の不要な作業に過ぎません。私は何とかRAMに格納し、コレクション以外の方法でクライアントに利用できるようにしたい(おそらく、メソッド呼び出しから戻る)。しかし、私はそれをどうやって行うかわからない。誰かが良いアプローチを提案できますか?meteor.js - 一時的なサーバー側のアプリケーション状態

あなたが(免責事項:私は著者午前):外部APIからデータを取得し、定期的にクライアントに公開するために、このパッケージ meteor-publish-joinを使用することができます
+0

メモリにデータを格納するには、変数、つまり 'var someData = fetchedData'を宣言します。 –

+0

なぜあなたは流星法を恐れていますか? – ghybs

答えて

1

サーバー:

import { JoinServer } from 'meteor-publish-join'; 

Meteor.publish('test', function() { 

    // Publish a random value from an external API, plays well with promise, re-run every 10 seconds 
    JoinServer.publish({ 
    context: this, 
    name: 'withPromise', 
    interval: 10000, 
    doJoin() { 
     const id = parseInt(Math.random() * 100, 10); 

     return fetch(`https://jsonplaceholder.typicode.com/posts/${id}`) 
     .then(res => res.json()) 
     .then(data => data.title) 
     .catch(err => console.error(err)); 
    }, 
    }); 
}); 

クライアント:

インポート{JoinClient}から 'meteor-publish-join';

Meteor.subscribe('test'); 

// Get the values published within `test` publication. All these values are reactive 
JoinClient.get('withPromise') 
+0

これは良いパッケージであり、私はそれがあなたのユースケースに正確に使われているのを見ました。 – DoctorPangloss

関連する問題