4

さて、私はmeteorJSで遊んでいて、yahooファイナンスサービスを使用して、jqueryを使用してjson形式でデータをフェッチしています。データを受け取ったら、それをmongoDBに保存します。私が目的のために持っているコードは次のとおりです

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構造でmongodbに挿入できることは知っていますが、これが正しい方法かどうかはわかりません。どんな助けでも大歓迎です。

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 に答える