tldr - 使用来自API的数据创建“专有数据库”的最佳模式是什么?在这种情况下,在mongo db中使用Meteor JS和集合。
步骤 1. Ping API 2.以某个间隔将数据插入Mongo
在lib / collections.js
中Prices = new Mongo.Collection("prices");
基本股票API致电,server.js
:
Meteor.methods({
getPrice: function () {
var result = Meteor.http.call("GET", "http://api.fakestockprices.com/ticker/GOOG.json");
return result.data;
}
});
假设JSON返回干净整洁,我想存储整个对象(如何操作返回的内容并不重要,存储返回值是)
我们可以操纵上面Meteor.method
函数中的数据,但我们应该这样做吗?在Angular中,服务用于调用API,但建议将API调用模块化并保持在自己的函数中。让我们借用,Meteor.call
以上getPrice
。
假设这也在server.js
中完成(请更正)。
Meteor.call("getPrice", function(error, result) {
if (error)
console.log(error)
var price = result;
Meteor.setInterval(function() {
Prices.insert(price);
}, 1800000); // 30min
});
进入数据库后,可以建立一个pub / sub,我将省略link to this overview。
答案 0 :(得分:1)
您可能需要查看synced-cron package。
使用cron工作非常简单,只需调用您的方法:
// server.js
SyncedCron.start();
SyncedCron.add({
name: "get Price",
schedule: function(parser){
return parser.text('every 30 minutes');
},
job: function(){
return Meteor.call("getPrice");
}
});
然后在getPrice
中,您可以var result = HTTP.call(/* etc */);
和Prices.insert(result);
。正如你所指出的那样,你当然会想要一些额外的检查。