2014-09-26 75 views
1

我正在學習流星,同時嘗試使用TwitchTV API。流星 - 服務器端API調用並每分鐘插入到mongodb中

我現在的目標是每分鐘調用一次TwitchAPI,然後將部分json對象插入到mongo數據庫中。由於MongoDB匹配_id和Twitch使用_id作爲它的關鍵,我希望後續插入將更新現有記錄或創建一個新的_id不存在。

調用和插入(至少是最初的一個)似乎工作正常。但是,我似乎無法使Meteor.setTimeout()函數正常工作。該電話會在我啓動應用程序時發生,但不會每分鐘持續發生。

這是我在.js。文件在我的服務器文件夾中:

Meteor.methods({ 
    getStreams: function() { 
     this.unblock(); 
     var url = 'https://api.twitch.tv/kraken/streams?limit=3'; 
     return Meteor.http.get(url); 
    }, 
    saveStreams: function() { 
     Meteor.call('getStreams', function(err, res) { 
      var data = res.data; 

      Test.insert(data); 
     } 
    } 
}); 

Deps.autorun(function(){ 
    Meteor.setTimeout(function(){Meteor.call('saveStreams');}, 1000); 
}); 

任何幫助或建議表示讚賞。

+2

我想你需要使用[Meteor.setInterval](http://docs.meteor.com/#meteor_setinterval)而不是Meteor.setTimeout這個用例。 – richsilv 2014-09-26 04:22:16

+0

Deps.autorun不應該用於服務器端,而應該使用Meteor.startup。 – saimeunt 2014-09-26 09:12:54

+0

@richsilv這解決了我的問題。不知道我錯過了這個功能。非常感謝! – tehaaron 2014-09-27 03:16:55

回答

1

我做了@richsilv和@saimeunt提到的變化,它工作。結果碼:

Meteor.startup(function(){ 
    Meteor.setInterval(function(){Meteor.call('saveStreams');}, 1000); 
}); 
+0

由於函數以millisecounds作爲參數,它會每隔一秒執行一次呼叫。 setTimeout(function,ms)和setInterval(function,ms) – Christian 2016-03-08 12:53:42