Mongodb MeteorJS:很难理解收藏
我是MeteorJS的新手,我正在构建一个基于XML API服务在谷歌地图上绘制点的应用程序(使用他们的API),当单击其中一个点时,将显示详细信息。非常直截了当 我正在努力解决的是,我需要存储API结果,这样API就不会在每次加载页面时都被ping,而且由于Meteor使用MongoDB,我曾想过将结果存储在一个集合中,但我不知道如何使用它们 以下是XML提要的外观:Mongodb MeteorJS:很难理解收藏,mongodb,collections,meteor,Mongodb,Collections,Meteor,我是MeteorJS的新手,我正在构建一个基于XML API服务在谷歌地图上绘制点的应用程序(使用他们的API),当单击其中一个点时,将显示详细信息。非常直截了当 我正在努力解决的是,我需要存储API结果,这样API就不会在每次加载页面时都被ping,而且由于Meteor使用MongoDB,我曾想过将结果存储在一个集合中,但我不知道如何使用它们 以下是XML提要的外观: <api version="1.0"> <id>597837338</id>
<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>
597837338
2014年3月6日晚上11:46:46
query://djsearch6/dejobs
销售或营销
500
1.
10
关联
客户服务代表-国家农场代理团队成员(财产和意外伤害保险重点)
http://my.jobs/a897284496c14249a8473d5947d08b4d321
Cie泰勒-国营农场代理
亚利桑那州梅萨
2014-1-19上午1:31
a897284496c14249a8473d5947d08b4d321
保险和金融服务职位-国营农场代理团队成员(有销售经验者优先)
http://my.jobs/1b717b9492464fbabbd22d3c0e8cf08d321
Cie泰勒-国营农场代理
亚利桑那州梅萨
2014-1-19上午1:31
1b717b9492464fbabbd22d3c0e8cf08d321
我想这可以给你一个大致的想法,如果我没有正确理解你的问题,我很抱歉:
要将XML解析为JSON,请执行以下操作:
首先将XML解析为JSON,例如,想象一下从XML中提取的JSON:
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});
});
那么问题是什么,因为这似乎还不是一个问题。也许可以添加你想要实现的目标。另外,既然您使用的是JavaScript,那么您是否可以从服务API返回JSON呢?这将更容易处理。@NeilLunn-很抱歉这个模糊的“问题”(或缺少一个)。让我重申我的问题。此外,API返回XML,不支持JSON:(一旦从XML中读取数据,问题就出现在哪里?这太棒了!非常感谢!所以当你在服务器脚本上说
,
,你是什么意思?如果(Meteor.isServer){//你的javascript代码在这里}我假设您正在从服务器调用API。是否要将API中的数据保留在数据库中?是的,这将非常有助于加快速度。如果您不应该使用方法,您应该创建一个在服务器上运行的函数,从API中选取数据,处理并保存到MongoDB。一旦您拥有了集合,就可以发布这些数据t收集到客户机。