2017-02-20 34 views
0

我需要在我的應用程序中使用來自第三方API的一些數據,從服務器輪詢一定頻率的所需數據,並將其提供給客戶端。最簡單的方法是創建一個集合並更新它,並通過pub/sub將數據提供給客戶端。但是,在這種特殊情況下,我不需要存儲該數據或對其進行跟蹤,並且它會更新頻繁,因此將其存儲到數據庫實際上只是額外的不必要的工作。我寧願將它以某種方式存儲在RAM中,並以除集合外的其他方式(可能是從方法調用返回)將其提供給客戶端。但我不確定,該怎麼做。有人可以提出一些好方法嗎?meteor.js - 臨時服務器端應用程序狀態

+0

將數據存儲在內存中將通過聲明一個變量,即'var someData = fetchedData'完成。 –

+0

你爲什麼害怕流星法? – ghybs

回答

1

你可以使用這個包meteor-publish-join來從外部API數據併發布到客戶端定期(免責聲明:我是作者):

服務器:

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)); 
    }, 
    }); 
}); 

客戶:

進口來自'meteor-publish-join'的{JoinClient};

Meteor.subscribe('test'); 

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

這是一個很好的包,我已經看到它用於你的用例。 – DoctorPangloss