繁体   English   中英

流星js创建mongodb数据库挂钩以固定间隔存储来自API的数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM