2014-09-26 3 views
1

TwitchTV API를 사용하여 동시에 Meteor를 학습하는 중입니다.Meteor - 매회 서버 측 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.setTimeout보다 [Meteor.setInterval] (http://docs.meteor.com/#meteor_setinterval)를 사용 할 필요가 있다고 생각합니다. – richsilv

+0

Deps.autorun은 서버 측에서 사용하도록되어 있지 않으므로 대신 Meteor.startup을 사용하십시오. – saimeunt

+0

@ richsilv이게 내 문제를 해결했습니다. 내가 어떻게 그 기능을 놓쳤는 지 잘 모르겠다. 정말 고마워! – tehaaron

답변

1

@ richsilv 및 @saimeunt에서 언급 한 변경 사항을 적용하여 효과적이었습니다. 결과 코드 :

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

함수는 밀리 초를 매개 변수로 사용하기 때문에 매 초마다 호출을 실행합니다. setTimeout (function, ms) 및 setInterval (function, ms) – Christian