[英]meteor js create mongodb database hook to store data from API at fixed interval
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,但建议将其模块化并保持其自身功能。 让我们借用它,然后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,我将省略并链接到此概述 。
您可能需要看一下synced-cron软件包 。
使用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);
。 正如您所指出的,您当然希望进行一些其他检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.