2014-07-10 2 views
0

다른 도메인에서 제공하는 몇 가지 외부 JSON 피드에서 데이터를 가져 오는 앱을 만들고 있습니다.외부 JSON 피드에서 유성 컬렉션을 정기적으로 업데이트하는 방법은 무엇입니까?

$ 위치 쿼리를 사용할 수 있도록 서버에 모음을 만들고 싶습니다.하지만 JSON 피드를 정기적으로 확인하여 업데이트되었는지 확인해야합니다. 이에 따라 내 컬렉션을 업데이트하십시오.

이렇게하는 '표준'방법이 있습니까? (내가 가지고있는 것을 서버에서 확인하는 것이 최신 버전입니까?)

편집 ... 자세한 정보!

내 JSON 피드에는 이라는 고유 한 식별자가 있지만 모든 피드에서 고유 한 식별자가 있습니다. 쿼리 서식을 지정하는 방법을 알면 upsert에서 사용할 수 있습니다. 그게 setInterval와 함께 작동할까요?

[{"offer_title":"NEW TEST OFFER!!!", 
    "url_title":"new-test-offer_144", 
    "offer_desc":"description here", 
    "offer_start":"2014-07-10", 
    "offer_end":"2014-07-12", 
    "offer_category":"food-drink", 
    "offer_advertiser":"Testing Corp", 
    "location": { 
     "type": "Point", 
     "coordinates": [-5.53596,50.12121] 
    } 
} ... 

그리고 나는이 같은 (현재 클라이언트 측) 데이터를 당기는 해요 : : 내 피드 중 하나는 다음과 같습니다

Offers = new Meteor.Collection(null); 

HTTP.get("http://myappurl.com/offers.json", function(err,result) { 
    if (result.statusCode === 200) { 
     respJson = JSON.parse(result.content); 
     for (var i = 0; i < respJson.length; i++) { 
      console.log('inserting '+respJson[i]['offer_advertiser']); 
      Offers.insert(respJson[i]); 
     } 
     //Commented out because I need to move this server side 
     //Offers._ensureIndex({location: "2dsphere"}); 
     } 
     else { 
     console.log(result.statusCode); 
     } 
}); 

내가 Meteor.setInterval이 포장하고 줄 경우 비교적 긴 간격 시간, 그게 효과가 있니? 삽입/업서트 형식은 어떻게 생깁니 까?

답변

0

빠른 해결책 :

외부 피드를 몽고 컬렉션으로 미러링합니다. 컬렉션을 만들고 주기적으로 외부 피드에서 업데이트하십시오. 평소와 같이 귀하의 질의 및 출판물을 작성하십시오.

+0

소리가 좋습니다. 내가 어떻게 그것에 대해 갈 것이냐? 어떤 종류의 pseudo (node) cron으로? 아니면 앱 내에서 그렇게할까요? – BellamyStudio

+0

유성 내부에 'cron'작업을 만들 수 있습니다. 서버 측 코드에서 Meteor.setInterval을 사용하면 Meteor.startup() 내에 배치하는 것이 가장 좋습니다. – cwohlman

관련 문제