2013-04-04 63 views
2

這是我的代碼。 https://github.com/StudioMockingbird/SH_meteor在流星中插入json數據

它只是排行榜的例子,我試圖在收藏中插入一些我自己的數據。

我的數據駐留在lib/book.js中,並被定義爲一個對象(var myBook)。

,我使用的插入代碼是在leaderboard.js爲 -

Pages = new Meteor.Collection("pages"); 
if (Meteor.isServer) { 
    Meteor.startup(function() { 
     if(Pages.find().count() === 0){ 
      var pages = JSON.parse(myBook.stories); 
      for (page in pages) { 
       Pages.insert(pages[page]); 
      } 
     } 
    }); 
} 

當我嘗試運行我的代碼,它給了我

Running on: http://localhost:3000/ 
Exited with code: 1 
Exited with code: 1 
Exited with code: 1 
Your application is crashing. Waiting for file change. 

我究竟做錯了什麼?我對流星是全新的。

+0

如果流星剛剛起步的時候就不會被其插入 – Akshat 2013-04-04 07:57:07

+0

時,我已經把我的數據在一個js文件在lib文件夾myBook可以在這一點上不確定我會更喜歡它。所以var被立即初始化。如果在同一個代碼塊中,我做了一個console.log,我可以看到myBook數據。 – 2013-04-04 08:06:13

回答

1

有幾件事情你需要化解:

使用var刪除作用域你的書

您已經使用var myBook,的myBook變量被作用域,或在至少這是我的0.6.0 RC8,如果你要的書用的console.log現在不擔心這個問題,但如果你碰到這個問題以後,如果0.6.0給你的問題只是改變它周圍

使用JSON.parse

你並不需要你的JSON數據解析爲一個對象作爲它已經被聲明爲一個,這樣改變:

var pages = JSON.parse(myBook.stories); 

var pages = myBook.stories; 

有了這些我設法讓它正常運行。

0

或以'forEach`的另一種方式。因爲它是「異步」

pages.forEach(function (item, index, array) { 
    console.log('inserting book ', item); 
    Pages.insert(
     item 
    ); 
});