2

这是我的代码。https://github.com/StudioMockingbird/SH_meteor

它只是我试图在集合中插入一些我自己的数据的排行榜示例。

我的数据位于 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.

我究竟做错了什么?我对流星完全陌生。

4

2 回答 2

1

您需要解决以下几点:

删除图书的范围

你已经使用了var myBook,通过使用变量被限定范围,或者至少它是在我的rc8 中,如果你用 console.log 得到这本书,现在不要担心这个,但是如果你以后遇到它,如果给出你的问题只是改变它varmyBook0.6.00.6.0

使用 JSON.parse

您不需要将 JSON 数据解析为一个对象,因为它已经声明为一个对象,因此请更改:

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

var pages = myBook.stories;

通过这些更改,我设法使其正常运行。

于 2013-04-04T08:54:50.323 回答
0

或者使用“forEach”的另一种方式。我更喜欢它,因为它是“异步”的

pages.forEach(function (item, index, array) {
    console.log('inserting book ', item);
    Pages.insert(
        item
    );
});
于 2014-11-20T19:25:33.880 回答