非常简单的事情让我很难过。我可以通过使用创建一个空白应用程序来重现该问题mrt create
,只添加以下内容:
在第 1 行,我创建了一个新集合:
Rounds = new Meteor.Collection('rounds');
在Meteor.isClient
条件代码中,我添加:
Rounds.insert({ x: 1 });
Rounds.find({}).forEach(function (round) {
console.log(round);
});
当我第一次(在本地,使用meteor run
)运行此代码时,会出现预期的行为,并且将以下行打印到控制台:
Object {x: 1, _id: "ps5KdA4b9it2ktQoD"}
但是,如果我刷新浏览器,就会发生意想不到的事情。我希望看到多行打印到控制台,因为我正在向我的收藏添加额外的回合。但是,只打印最近一轮:
Object {_id: "dqMuz6CmK2K9myZn5", x: 1}
相反,如果我forEach
直接在控制台中运行上面的行,我会得到预期的行为,集合中的每一轮都有一个打印行:
Rounds.find({}).forEach(function (post){
console.log(post);
})
Object {_id: "KAcopbPDE9JC2rShY", x: 1}
Object {_id: "ps5KdA4b9it2ktQoD", x: 1}
Object {_id: "dqMuz6CmK2K9myZn5", x: 1}
Object {_id: "ecbWcRXXLQANy8Xyj", x: 1}
Object {_id: "QsbczHmZZMX59LzTZ", x: 1}
为什么这两种情况下的行为不同?而且,最重要的是,我如何在实际代码中重现我在控制台中找到的行为(我所期望的)?
谢谢。