用meteorJS中的服务数据填充mongodb

时间:2012-04-25 20:29:11

标签: jquery mongodb meteor

好的,所以我正在玩meteorJS,我正在使用雅虎财务服务,使用jquery以json格式获取一些数据。收到数据后,我想将其存储到我的mongo DB中。我为此目的编写的代码如下:

Stocks = new Meteor.Collection("stocks");
$.ajax({
  type:'GET',
  url:'http://query.yahooapis.com/v1/public/yql?q=select*from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22GOOG%22)&env=store://datatables.org/alltableswithkeys&format=json',
  success:function(data){
    if (Meteor.is_server) {
          Meteor.startup(function () {
            if (Stocks.find().count() === 0) {
                Stocks.insert(data);
            }
          });
        }
    }
});

现在你可以看到我不知道我在做什么是正确的。我知道你可以插入带有json结构的mongo db,这是我所拥有但不确定这是否正确。 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:9)

你几乎就在那里,只是向后走了一点。您应该首先检查它是否是服务器,然后获取数据。你也应该使用Meteor内置的http方法。

首先,您需要添加http包。在你的meteor项目的根目录中,从终端运行它:

meteor add http

然后相关的代码是:

if(Meteor.is_server){
  Meteor.startup(function () {
    if(Stocks.find().count() === 0){
      var url = "http://query.yahooapis.com/v1/public/yql" + 
                "?q=select*from%20yahoo.finance.quotes%20where" +
                "%20symbol%20in%20%28%22GOOG%22%29&env=" +
                "store://datatables.org/alltableswithkeys&format=json"
      Meteor.http.get(url, function(error,results){
        var stock_data = JSON.parse(results.content).query.results.quote
        Stocks.insert(stock_data)
      });
    }
  });
}


Meteor for Meteor的http方法: http://docs.meteor.com/#meteor_http