2014-03-07 18 views
0

我是一個福利局到MeteorJS,我構建一個谷歌地圖繪製點的應用程序基於XML API服務(使用他們的API),並就這些問題的一個點擊時,將顯示詳細信息。非常直截了當。MeteorJS:有一個很難理解的集合

我正在努力的是,我需要存儲API結果,以便在每次頁面加載時都不會ping API,並且自Meteor使用MongoDB以來,我想將結果存儲在集合中,但是我我只是不確定我懂得如何使用它們。

這裏是一個XML提要將是什麼樣子:

<api version="1.0"> 
    <id>597837338</id> 
    <time>3/6/2014 11:46:46 PM</time> 
    <machine>query://djsearch6/dejobs</machine> 
    <query>sales OR marketing</query> 
    <recordcount>500</recordcount> 
    <startrow>1</startrow> 
    <endrow>10</endrow> 
    <order>relevance</order> 
    <jobs> 
    <job> 
     <title> 
     Customer Service Representative - State Farm Agent Team Member (Property and Casualty Insurance Focus) 
     </title> 
     <url>http://my.jobs/a897284496c14249a8473d5947d08b4d321</url> 
     <company>Cie Taylor - State Farm Agent</company> 
     <location>Mesa, AZ</location> 
     <dateacquired>2014-1-19 1:31 AM</dateacquired> 
     <jvid>a897284496c14249a8473d5947d08b4d321</jvid> 
    </job> 
    <job> 
     <title> 
     Insurance and Financial Services Position - State Farm Agent Team Member (Sales experience preferred) 
     </title> 
     <url>http://my.jobs/1b717b9492464fbabbd22d3c0e8cf08d321</url> 
     <company>Cie Taylor - State Farm Agent</company> 
     <location>Mesa, AZ</location> 
     <dateacquired>2014-1-19 1:31 AM</dateacquired> 
     <jvid>1b717b9492464fbabbd22d3c0e8cf08d321</jvid> 
    </job> 
    </jobs> 
</api> 
+1

什麼然後問題,因爲這似乎還不是一個。也許增加你想要達到的。另外,由於您使用的是JavaScript,您是否可以不直接從服務API返回JSON?這將更容易處理。 –

+0

@NeilLunn - 抱歉模糊的「問題」(或缺少一個)。讓我重新提一下我的問題。此外,API返回XML,不支持JSON :( – dennismonsewicz

+0

一旦你從XML中讀取數據,是你的問題出現在哪裏? – lfergon

回答

1

我想這可以給你一個總體思路,如果我不都明白你的問題正確的方法,我的道歉:

爲了從XML解析到JSON:http://davidwalsh.name/convert-xml-json

首先解析XML的JSON,例如想象這JSON從XML提取:

var dataFromXML = { 
    "company": 597837338, 
    "createdAt": "3/6/2014 11:46:46 PM", 
    "jobs": [ 
     {"title": "job1", "url": "job1url", "company": "job1company", "location": "job1location", "dateUpdate": "job1date", "id": "job1id" }, 
     {"title": "job2", "url": "job2url", "company": "job2company", "location": "job2location", "dateUpdate": "job2date", "id": "job2id" } 
    ] 
}; 

現在在服務器腳本,你可以插入一個集合這樣的數據:

JobsCollection.insert({company: dataFromXML.company ,dataFromAPI: dataFromXML}); 

萬一你的結果是一個數組,你可以在foreach循環運行此:

var dataFromXMLArray = [ 
    { 
     "company": 597837338, 
     "createdAt": "3/6/2014 11:46:46 PM", 
     "jobs": [ 
      {"title": "job1", "url": "job1url", "company": "job1company", "location": "job1location", "dateUpdate": "job1date", "id": "job1id" }, 
      {"title": "job2", "url": "job2url", "company": "job2company", "location": "job2location", "dateUpdate": "job2date", "id": "job2id" } 
     ] 
    }, 
    { 
     "company": 597837338, 
     "createdAt": "3/6/2014 11:46:46 PM", 
     "jobs": [ 
      {"title": "job1", "url": "job1url", "company": "job1company", "location": "job1location", "dateUpdate": "job1date", "id": "job1id" }, 
      {"title": "job2", "url": "job2url", "company": "job2company", "location": "job2location", "dateUpdate": "job2date", "id": "job2id" } 
     ] 
    } 
]; 

dataFromXMLArray.forEach(function (data) { 
    JobsCollection.insert({company: data.company, dataFromAPI: data}); 
}); 
+0

這太棒了!非常感謝!所以當你說'在服務器腳本上',什麼你的意思是? – dennismonsewicz

+0

如果(Meteor.isServer){//這裏你的JavaScript代碼}我想象你正在呼籲從服務器的API。 – lfergon

+0

是,https://gist.github.com/dennismonsewicz/48902a21b348904ac63b – dennismonsewicz