4

好的,所以我正在玩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,但不确定这是否正确。任何帮助深表感谢。

4

1 回答 1

9

你快到了,只是稍微倒退了一点。您应该先检查它是否是服务器,然后再获取数据。你也应该使用 Meteor 内置的 http 方法。

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

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 的 http 方法的文档:http: //docs.meteor.com/#meteor_http

于 2012-04-25T22:18:36.563 回答